Add phone login support and member import functionality
Features: - Support login via phone number or email (LoginRequest) - Add members:import-roster command for Excel roster import - Merge survey emails with roster data Code Quality (Phase 1-4): - Add database locking for balance calculation - Add self-approval checks for finance workflow - Create service layer (FinanceDocumentApprovalService, PaymentVerificationService) - Add HasAccountingEntries and HasApprovalWorkflow traits - Create FormRequest classes for validation - Add status-badge component - Define authorization gates in AuthServiceProvider - Add accounting config file Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
// use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class AuthServiceProvider extends ServiceProvider
|
||||
{
|
||||
@@ -21,6 +21,58 @@ class AuthServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
//
|
||||
// Define gates that map to Spatie permissions
|
||||
// These gates are used in controllers with $this->authorize()
|
||||
|
||||
// Payment Order gates
|
||||
Gate::define('create_payment_order', function ($user) {
|
||||
return $user->can('create_payment_order');
|
||||
});
|
||||
|
||||
Gate::define('verify_payment_order', function ($user) {
|
||||
return $user->can('verify_payment_order');
|
||||
});
|
||||
|
||||
Gate::define('execute_payment', function ($user) {
|
||||
return $user->can('execute_payment');
|
||||
});
|
||||
|
||||
// Finance document gates
|
||||
Gate::define('approve_finance_secretary', function ($user) {
|
||||
return $user->can('approve_finance_secretary') || $user->hasRole('secretary_general');
|
||||
});
|
||||
|
||||
Gate::define('approve_finance_chair', function ($user) {
|
||||
return $user->can('approve_finance_chair') || $user->hasRole('finance_chair');
|
||||
});
|
||||
|
||||
Gate::define('approve_finance_board', function ($user) {
|
||||
return $user->can('approve_finance_board') || $user->hasRole('finance_board_member');
|
||||
});
|
||||
|
||||
// Member management gates
|
||||
Gate::define('create_members', function ($user) {
|
||||
return $user->can('create_members') || $user->hasRole(['admin', 'super_admin']);
|
||||
});
|
||||
|
||||
Gate::define('edit_members', function ($user) {
|
||||
return $user->can('edit_members') || $user->hasRole(['admin', 'super_admin']);
|
||||
});
|
||||
|
||||
// Issue management gates
|
||||
Gate::define('create_issues', function ($user) {
|
||||
return $user->can('create_issues') || $user->hasRole(['admin', 'super_admin']);
|
||||
});
|
||||
|
||||
Gate::define('edit_issues', function ($user) {
|
||||
return $user->can('edit_issues') || $user->hasRole(['admin', 'super_admin']);
|
||||
});
|
||||
|
||||
// Super admin bypass - can do anything
|
||||
Gate::before(function ($user, $ability) {
|
||||
if ($user->hasRole('super_admin')) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user