diff --git a/backend/.dockerignore b/backend/.dockerignore old mode 100755 new mode 100644 diff --git a/backend/.editorconfig b/backend/.editorconfig old mode 100755 new mode 100644 diff --git a/backend/.env.example b/backend/.env.example old mode 100755 new mode 100644 diff --git a/backend/.gitattributes b/backend/.gitattributes old mode 100755 new mode 100644 diff --git a/backend/.gitignore b/backend/.gitignore old mode 100755 new mode 100644 diff --git a/backend/.npmrc b/backend/.npmrc old mode 100755 new mode 100644 diff --git a/backend/Dockerfile b/backend/Dockerfile old mode 100755 new mode 100644 diff --git a/backend/Dockerfile.production b/backend/Dockerfile.production old mode 100755 new mode 100644 diff --git a/backend/README.md b/backend/README.md old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Controllers/AuthController.php b/backend/app/Admin/Controllers/AuthController.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Controllers/DocumentationController.php b/backend/app/Admin/Controllers/DocumentationController.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Controllers/ExpertManagementController.php b/backend/app/Admin/Controllers/ExpertManagementController.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Controllers/PermissionManagementController.php b/backend/app/Admin/Controllers/PermissionManagementController.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Controllers/ProfileController.php b/backend/app/Admin/Controllers/ProfileController.php old mode 100755 new mode 100644 index 5b825966..3a810e55 --- a/backend/app/Admin/Controllers/ProfileController.php +++ b/backend/app/Admin/Controllers/ProfileController.php @@ -3,6 +3,7 @@ namespace App\Admin\Controllers; use App\Admin\Requests\Profile\ChangePasswordRequest; +use App\Admin\Requests\Profile\EditRequest; use App\Admin\Resources\ExpertResource; use App\Http\Controllers\Controller; use App\Traits\ApiResponse; @@ -19,6 +20,24 @@ class ProfileController extends Controller return $this->successResponse(new ExpertResource(Auth::guard('expert')->user())); } + public function edit(EditRequest $request): JsonResponse + { + $expert = $request->user('expert'); + + $expert->update([ + 'username' => $request->username, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'email' => $expert->email, + 'national_id' => $request->national_id, + 'phone_number' => $request->phone_number, + 'province_id' => $request->province_id, + 'city_id' => $request->city_id, + ]); + + return $this->successResponse(); + } + public function changePassword(ChangePasswordRequest $request): JsonResponse { $expert = Auth::guard('expert')->user(); @@ -34,4 +53,5 @@ class ProfileController extends Controller return $this->successResponse(); } + } diff --git a/backend/app/Admin/Controllers/UserManagementController.php b/backend/app/Admin/Controllers/UserManagementController.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/Auth/LoginRequest.php b/backend/app/Admin/Requests/Auth/LoginRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/Auth/RegisterRequest.php b/backend/app/Admin/Requests/Auth/RegisterRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/Documentation/RejectRequest.php b/backend/app/Admin/Requests/Documentation/RejectRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/ExpertManagement/StoreRequest.php b/backend/app/Admin/Requests/ExpertManagement/StoreRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/ExpertManagement/UpdateRequest.php b/backend/app/Admin/Requests/ExpertManagement/UpdateRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/PermissionManagement/StoreRequest.php b/backend/app/Admin/Requests/PermissionManagement/StoreRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/PermissionManagement/UpdateRequest.php b/backend/app/Admin/Requests/PermissionManagement/UpdateRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/Profile/ChangePasswordRequest.php b/backend/app/Admin/Requests/Profile/ChangePasswordRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/Profile/EditRequest.php b/backend/app/Admin/Requests/Profile/EditRequest.php new file mode 100644 index 00000000..dcdbeef1 --- /dev/null +++ b/backend/app/Admin/Requests/Profile/EditRequest.php @@ -0,0 +1,36 @@ + + */ + public function rules(): array + { + return [ + 'username' => 'string|max:255', + 'first_name' => 'string', + 'last_name' => 'string', + 'email' => 'string|email|max:255', + 'national_id' => 'string', + 'phone_number' => 'string', + 'province_id' => 'string', + 'city_id' => 'string', + ]; + } +} diff --git a/backend/app/Admin/Requests/RoleManagement/StoreRequest.php b/backend/app/Admin/Requests/RoleManagement/StoreRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/RoleManagement/UpdateRequest.php b/backend/app/Admin/Requests/RoleManagement/UpdateRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/UserManagement/StoreRequest.php b/backend/app/Admin/Requests/UserManagement/StoreRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Requests/UserManagement/UpdateRequest.php b/backend/app/Admin/Requests/UserManagement/UpdateRequest.php old mode 100755 new mode 100644 diff --git a/backend/app/Admin/Resources/ExpertResource.php b/backend/app/Admin/Resources/ExpertResource.php old mode 100755 new mode 100644 diff --git a/backend/app/Facades/DataTable/DataTable.php b/backend/app/Facades/DataTable/DataTable.php old mode 100755 new mode 100644 diff --git a/backend/app/Facades/DataTable/DataTableFacade.php b/backend/app/Facades/DataTable/DataTableFacade.php old mode 100755 new mode 100644 diff --git a/backend/app/Facades/File/File.php b/backend/app/Facades/File/File.php old mode 100755 new mode 100644 diff --git a/backend/app/Facades/File/FileFacade.php b/backend/app/Facades/File/FileFacade.php old mode 100755 new mode 100644 diff --git a/backend/app/Http/Controllers/Controller.php b/backend/app/Http/Controllers/Controller.php old mode 100755 new mode 100644 diff --git a/backend/app/Mail/LoginNotificationMail.php b/backend/app/Mail/LoginNotificationMail.php old mode 100755 new mode 100644 diff --git a/backend/app/Models/City.php b/backend/app/Models/City.php old mode 100755 new mode 100644 diff --git a/backend/app/Models/Document.php b/backend/app/Models/Document.php old mode 100755 new mode 100644 diff --git a/backend/app/Models/Expert.php b/backend/app/Models/Expert.php old mode 100755 new mode 100644 diff --git a/backend/app/Models/Province.php b/backend/app/Models/Province.php old mode 100755 new mode 100644 diff --git a/backend/app/Models/User.php b/backend/app/Models/User.php index 20e0ad4a..ef9670d0 100755 --- a/backend/app/Models/User.php +++ b/backend/app/Models/User.php @@ -10,8 +10,6 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; -use Illuminate\Support\Facades\Hash; -use Laravel\Passport\Bridge\Client; use Laravel\Passport\HasApiTokens; #[Guarded(['id'])] @@ -26,14 +24,4 @@ class User extends Authenticatable { return $this->morphToMany(Document::class, 'documentable'); } - - public function validateForPassportPasswordGrant(string $password): bool - { - return Hash::check($password, $this->password); - } - - public function findForPassport(string $username, Client $client): User - { - return $this->where('username', $username)->first(); - } } diff --git a/backend/app/Providers/AppServiceProvider.php b/backend/app/Providers/AppServiceProvider.php index c542af2e..1039668a 100755 --- a/backend/app/Providers/AppServiceProvider.php +++ b/backend/app/Providers/AppServiceProvider.php @@ -22,8 +22,6 @@ class AppServiceProvider extends ServiceProvider public function boot(): void { Passport::enablePasswordGrant(); - Passport::tokensExpireIn(CarbonInterval::minutes(1)); - Passport::refreshTokensExpireIn(CarbonInterval::minutes(5)); Passport::personalAccessTokensExpireIn(CarbonInterval::minutes(1)); } } diff --git a/backend/app/Providers/DataTableServiceProvider.php b/backend/app/Providers/DataTableServiceProvider.php old mode 100755 new mode 100644 diff --git a/backend/app/Providers/FileServiceProvider.php b/backend/app/Providers/FileServiceProvider.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/DataTableInput.php b/backend/app/Services/DataTable/DataTableInput.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/DataTableService.php b/backend/app/Services/DataTable/DataTableService.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Enums/DataType.php b/backend/app/Services/DataTable/Enums/DataType.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Enums/SearchType.php b/backend/app/Services/DataTable/Enums/SearchType.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Exceptions/InvalidFilterException.php b/backend/app/Services/DataTable/Exceptions/InvalidFilterException.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Exceptions/InvalidParameterInterface.php b/backend/app/Services/DataTable/Exceptions/InvalidParameterInterface.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Exceptions/InvalidRelationException.php b/backend/app/Services/DataTable/Exceptions/InvalidRelationException.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Exceptions/InvalidSortingException.php b/backend/app/Services/DataTable/Exceptions/InvalidSortingException.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/ApplyFilter.php b/backend/app/Services/DataTable/Filter/ApplyFilter.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/Filter.php b/backend/app/Services/DataTable/Filter/Filter.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/FilterBetween.php b/backend/app/Services/DataTable/Filter/SearchFunctions/FilterBetween.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/FilterContains.php b/backend/app/Services/DataTable/Filter/SearchFunctions/FilterContains.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/FilterEquals.php b/backend/app/Services/DataTable/Filter/SearchFunctions/FilterEquals.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/FilterGreaterThan.php b/backend/app/Services/DataTable/Filter/SearchFunctions/FilterGreaterThan.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/FilterGreaterThanOrEqual.php b/backend/app/Services/DataTable/Filter/SearchFunctions/FilterGreaterThanOrEqual.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/FilterLessThan.php b/backend/app/Services/DataTable/Filter/SearchFunctions/FilterLessThan.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/FilterLessThanOrEqual.php b/backend/app/Services/DataTable/Filter/SearchFunctions/FilterLessThanOrEqual.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/FilterNotEquals.php b/backend/app/Services/DataTable/Filter/SearchFunctions/FilterNotEquals.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Filter/SearchFunctions/SearchFilter.php b/backend/app/Services/DataTable/Filter/SearchFunctions/SearchFilter.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Sort/ApplySort.php b/backend/app/Services/DataTable/Sort/ApplySort.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Sort/Sort.php b/backend/app/Services/DataTable/Sort/Sort.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Validators/FilterValidator.php b/backend/app/Services/DataTable/Validators/FilterValidator.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Validators/RelationValidator.php b/backend/app/Services/DataTable/Validators/RelationValidator.php old mode 100755 new mode 100644 diff --git a/backend/app/Services/DataTable/Validators/SortingValidator.php b/backend/app/Services/DataTable/Validators/SortingValidator.php old mode 100755 new mode 100644 diff --git a/backend/app/User/Controllers/AuthController.php b/backend/app/User/Controllers/AuthController.php old mode 100755 new mode 100644 diff --git a/backend/app/User/Controllers/Dashboard/ConfirmController.php b/backend/app/User/Controllers/Dashboard/ConfirmController.php new file mode 100755 index 00000000..8fdc5909 --- /dev/null +++ b/backend/app/User/Controllers/Dashboard/ConfirmController.php @@ -0,0 +1,14 @@ +create(); User::factory()->create([ - 'username' => 'test', + 'username' => 'Test User', 'email' => 'test@example.com', 'password' => 'password123@', ]); diff --git a/backend/database/seeders/DocumentSeeder.php b/backend/database/seeders/DocumentSeeder.php old mode 100755 new mode 100644 diff --git a/backend/database/seeders/ExpertSeeder.php b/backend/database/seeders/ExpertSeeder.php old mode 100755 new mode 100644 diff --git a/backend/database/seeders/ProvinceSeeder.php b/backend/database/seeders/ProvinceSeeder.php old mode 100755 new mode 100644 diff --git a/backend/package.json b/backend/package.json old mode 100755 new mode 100644 diff --git a/backend/phpunit.xml b/backend/phpunit.xml old mode 100755 new mode 100644 diff --git a/backend/public/.htaccess b/backend/public/.htaccess old mode 100755 new mode 100644 diff --git a/backend/public/favicon.ico b/backend/public/favicon.ico old mode 100755 new mode 100644 diff --git a/backend/public/index.php b/backend/public/index.php old mode 100755 new mode 100644 diff --git a/backend/public/robots.txt b/backend/public/robots.txt old mode 100755 new mode 100644 diff --git a/backend/resources/css/app.css b/backend/resources/css/app.css old mode 100755 new mode 100644 diff --git a/backend/resources/js/app.js b/backend/resources/js/app.js old mode 100755 new mode 100644 diff --git a/backend/resources/lang/ar/notifications.php b/backend/resources/lang/ar/notifications.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/en/auth.php b/backend/resources/lang/en/auth.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/en/messages.php b/backend/resources/lang/en/messages.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/en/pagination.php b/backend/resources/lang/en/pagination.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/en/passwords.php b/backend/resources/lang/en/passwords.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/en/validation.php b/backend/resources/lang/en/validation.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/fa/auth.php b/backend/resources/lang/fa/auth.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/fa/messages.php b/backend/resources/lang/fa/messages.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/fa/pagination.php b/backend/resources/lang/fa/pagination.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/fa/passwords.php b/backend/resources/lang/fa/passwords.php old mode 100755 new mode 100644 diff --git a/backend/resources/lang/fa/validation.php b/backend/resources/lang/fa/validation.php old mode 100755 new mode 100644 diff --git a/backend/resources/views/emails/login-notification.blade.php b/backend/resources/views/emails/login-notification.blade.php old mode 100755 new mode 100644 diff --git a/backend/resources/views/welcome.blade.php b/backend/resources/views/welcome.blade.php old mode 100755 new mode 100644 diff --git a/backend/routes/console.php b/backend/routes/console.php old mode 100755 new mode 100644 diff --git a/backend/routes/expert.php b/backend/routes/expert.php index 50400564..14f37a0c 100755 --- a/backend/routes/expert.php +++ b/backend/routes/expert.php @@ -6,6 +6,7 @@ use App\Admin\Controllers\ExpertManagementController; use App\Admin\Controllers\PermissionManagementController; use App\Admin\Controllers\RoleManagementController; use App\Admin\Controllers\UserManagementController; +use App\Admin\Controllers\ProfileController; Route::prefix('auth') ->name('auth.') @@ -71,3 +72,14 @@ Route::prefix('expert') Route::post('/{expert}', 'update')->name('update'); Route::delete('/{expert}', 'destroy')->name('destroy'); }); + +Route::prefix('profile') + ->name('profile.') + ->middleware('auth') + ->controller(ProfileController::class) + ->group(function () { + Route::get('info', 'info')->name('info'); + Route::post('edit', 'edit')->name('edit'); + Route::post('change_password', 'changePassword')->name('changePassword'); + }); + diff --git a/backend/routes/web.php b/backend/routes/web.php index 28784019..b81845c1 100755 --- a/backend/routes/web.php +++ b/backend/routes/web.php @@ -26,3 +26,49 @@ Route::prefix('profile') Route::post('edit', 'edit')->name('edit'); Route::post('change_password', 'changePassword')->name('changePassword'); }); + +Route::prefix('admin') + ->name('Admin.') + ->group(function () { + Route::prefix('user_management') + ->name('user_management.') + ->controller(UserManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{user}', 'show')->name('show'); + Route::post('/{user}', 'update')->name('update'); + Route::delete('/{user}', 'destroy')->name('destroy'); + }); + Route::prefix('roles') + ->name('roles.') + ->controller(RoleManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{role}', 'show')->name('show'); + Route::post('/{role}', 'update')->name('update'); + Route::delete('/{role}', 'destroy')->name('destroy'); + }); + Route::prefix('permissions') + ->name('permissions.') + ->controller(PermissionManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{permission}', 'show')->name('show'); + Route::post('/{permission}', 'update')->name('update'); + Route::delete('/{permission}', 'destroy')->name('destroy'); + }); + Route::prefix('expert') + ->name('expert.') + ->controller(ExpertManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{expert}', 'show')->name('show'); + Route::post('/{expert}', 'update')->name('update'); + Route::delete('/{expert}', 'destroy')->name('destroy'); + }); + }); + diff --git a/backend/tests/Feature/ExampleTest.php b/backend/tests/Feature/ExampleTest.php old mode 100755 new mode 100644 diff --git a/backend/tests/Pest.php b/backend/tests/Pest.php old mode 100755 new mode 100644 diff --git a/backend/tests/TestCase.php b/backend/tests/TestCase.php old mode 100755 new mode 100644 diff --git a/backend/tests/Unit/ExampleTest.php b/backend/tests/Unit/ExampleTest.php old mode 100755 new mode 100644 diff --git a/backend/vite.config.js b/backend/vite.config.js old mode 100755 new mode 100644