|string> */ public function rules(): array { return [ 'first_name' => [ 'required', 'string', 'min:2', 'max:64', 'persian_alpha' ], 'last_name' => [ 'required', 'string', 'min:2', 'max:64', 'persian_alpha' ], 'username' => [ 'required', 'string', 'min:2', 'max:100', 'regex:/^[A-Za-z0-9_]+$/', 'unique:admins,username' ], 'email' => [ 'nullable', 'email', 'max:150', 'unique:users,email' ], 'mobile' => [ 'nullable', 'string', 'ir_mobile:zero' ], 'password' => [ 'required', 'min:8', 'max:255', 'alpha_num', ], 'role' => [ 'required', Rule::enum(AdminRole::class), ], 'status' => [ 'required', Rule::enum(AdminStatus::class), ], 'permissions' => [ 'nullable', 'array', 'min:1', ], 'permissions.*' => [ 'required', 'string', 'distinct', Rule::enum(AdminPermission::class), ], ]; } public function withValidator($validator): void { $validator->after(function ($validator) { $role = $this->input('role'); $permissions = $this->input('permissions', []); $isSuperAdmin = $role === \App\Enums\Admin\AdminRole::SUPERADMIN->value; $manageAdminsPermission = \App\Enums\Admin\AdminPermission::MANAGE_ADMINS->value; if ( !$isSuperAdmin && in_array($manageAdminsPermission, $permissions) ) { $validator->errors()->add( 'permissions', 'مدیر عادی نمی‌تواند دسترسی مدیریت مدیران را داشته باشد.' ); } }); } }