diff --git a/src/c2dl/routes/web.php b/src/c2dl/routes/web.php index dcb2f9d..0e1c3b9 100644 --- a/src/c2dl/routes/web.php +++ b/src/c2dl/routes/web.php @@ -50,20 +50,19 @@ Route::get('/news/feed', 'NewsController@rssFeed')->name('news.feed'); // Authentication - // Route::get('login', 'Auth\LoginController@showLoginForm')->name('login'); - // Route::post('login', 'Auth\LoginController@login'); - // Route::post('logout', 'Auth\LoginController@logout')->name('logout'); + Route::get('login', 'Auth\LoginController@showLoginForm')->name('login'); + Route::post('login', 'Auth\LoginController@login'); + Route::post('logout', 'Auth\LoginController@logout')->name('logout'); // Registration - // Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register'); - // Route::post('register', 'Auth\RegisterController@register'); + Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register'); + Route::post('register', 'Auth\RegisterController@register'); // Password Reset // Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm'); // Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail'); // Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm'); // Route::post('password/reset', 'Auth\ResetPasswordController@reset'); - }); Route::redirect('/wiki', 'https://wiki.c2dl.info')->name('wiki'); From 47a511c94ebc7014cfe176daa842ba20d0278583 Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sat, 12 Nov 2022 15:17:12 +0000 Subject: [PATCH 2/9] Implement password resetting --- .../app/Providers/AuthServiceProvider.php | 6 +++- src/c2dl/composer.json | 2 +- ...019_12_01_000000_create_acc_user_table.php | 4 +-- ...12_145506_create_password_resets_table.php | 32 +++++++++++++++++++ src/c2dl/routes/web.php | 8 ++--- 5 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 src/c2dl/database/migrations/2022_11_12_145506_create_password_resets_table.php diff --git a/src/c2dl/app/Providers/AuthServiceProvider.php b/src/c2dl/app/Providers/AuthServiceProvider.php index fd082d2..debe44d 100644 --- a/src/c2dl/app/Providers/AuthServiceProvider.php +++ b/src/c2dl/app/Providers/AuthServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use Illuminate\Auth\Notifications\ResetPassword; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Gate; @@ -27,6 +28,9 @@ public function boot() { $this->registerPolicies(); - // + // Properly format the button link in the email. + ResetPassword::createUrlUsing(function ($_user, string $token) { + return route('password.request', $token); + }); } } diff --git a/src/c2dl/composer.json b/src/c2dl/composer.json index 118244c..b21e96d 100644 --- a/src/c2dl/composer.json +++ b/src/c2dl/composer.json @@ -12,7 +12,7 @@ "ext-dom": "*", "fruitcake/laravel-cors": "^3.0", "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.2", + "laravel/framework": "^9.3", "laravel/tinker": "^2.7", "laravel/sanctum": "^2.14.1", "laravel/ui": "^3.0", diff --git a/src/c2dl/database/migrations/2019_12_01_000000_create_acc_user_table.php b/src/c2dl/database/migrations/2019_12_01_000000_create_acc_user_table.php index fa48301..7607c4b 100644 --- a/src/c2dl/database/migrations/2019_12_01_000000_create_acc_user_table.php +++ b/src/c2dl/database/migrations/2019_12_01_000000_create_acc_user_table.php @@ -16,12 +16,12 @@ public function up() Schema::connection('acc')->create('users', function (Blueprint $table) { $table->id('user_id'); $table->string('name', 64)->unique()->comment('Unique user name'); - $table->string('email')->unique(); + $table->string('email')->unique()->comment('Unique user email'); $table->boolean('active')->default(false) ->comment('True if user is usable/active - False user not exist (anymore)'); $table->dateTime('validate_at')->nullable() ->comment('Date if user validated (usable) - null unvalidated'); - $table->string('password'); + $table->string('password')->comment('User chosen password'); $table->rememberToken(); $table->timestamps(); }); diff --git a/src/c2dl/database/migrations/2022_11_12_145506_create_password_resets_table.php b/src/c2dl/database/migrations/2022_11_12_145506_create_password_resets_table.php new file mode 100644 index 0000000..fcacb80 --- /dev/null +++ b/src/c2dl/database/migrations/2022_11_12_145506_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +}; diff --git a/src/c2dl/routes/web.php b/src/c2dl/routes/web.php index 0e1c3b9..a0f7829 100644 --- a/src/c2dl/routes/web.php +++ b/src/c2dl/routes/web.php @@ -59,10 +59,10 @@ Route::post('register', 'Auth\RegisterController@register'); // Password Reset - // Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm'); - // Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail'); - // Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm'); - // Route::post('password/reset', 'Auth\ResetPasswordController@reset'); + Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.reset'); + Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email'); + Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.request'); + Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update'); }); Route::redirect('/wiki', 'https://wiki.c2dl.info')->name('wiki'); From 2760efe7c18be0d5fa7603a5d47e23a3e3f869a1 Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sun, 13 Nov 2022 09:20:09 +0000 Subject: [PATCH 3/9] Revert edited migrations --- .../2019_12_01_000000_create_acc_user_table.php | 11 +++++------ .../2019_12_01_100000_create_acc_mail_table.php | 2 +- .../2019_12_01_200000_create_acc_auth_table.php | 2 +- .../2019_12_01_400000_create_acc_linked_table.php | 2 +- .../2019_12_01_500000_create_main_news_table.php | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/c2dl/database/migrations/2019_12_01_000000_create_acc_user_table.php b/src/c2dl/database/migrations/2019_12_01_000000_create_acc_user_table.php index 7607c4b..f889b55 100644 --- a/src/c2dl/database/migrations/2019_12_01_000000_create_acc_user_table.php +++ b/src/c2dl/database/migrations/2019_12_01_000000_create_acc_user_table.php @@ -13,17 +13,16 @@ class CreateAccUserTable extends Migration */ public function up() { - Schema::connection('acc')->create('users', function (Blueprint $table) { - $table->id('user_id'); + Schema::connection('acc')->create('acc_user', function (Blueprint $table) { + $table->bigIncrements('user_id')->comment('Unique user id'); $table->string('name', 64)->unique()->comment('Unique user name'); - $table->string('email')->unique()->comment('Unique user email'); $table->boolean('active')->default(false) ->comment('True if user is usable/active - False user not exist (anymore)'); $table->dateTime('validate_at')->nullable() ->comment('Date if user validated (usable) - null unvalidated'); - $table->string('password')->comment('User chosen password'); $table->rememberToken(); - $table->timestamps(); + $table->dateTime('created_at')->useCurrent()->comment('Created'); + $table->dateTime('updated_at')->nullable()->comment('Updated, null if not'); }); } @@ -34,6 +33,6 @@ public function up() */ public function down() { - Schema::connection('acc')->dropIfExists('users'); + Schema::connection('acc')->dropIfExists('acc_user'); } } diff --git a/src/c2dl/database/migrations/2019_12_01_100000_create_acc_mail_table.php b/src/c2dl/database/migrations/2019_12_01_100000_create_acc_mail_table.php index 835f2af..319e952 100644 --- a/src/c2dl/database/migrations/2019_12_01_100000_create_acc_mail_table.php +++ b/src/c2dl/database/migrations/2019_12_01_100000_create_acc_mail_table.php @@ -16,7 +16,7 @@ public function up() Schema::connection('acc')->create('acc_mail', function (Blueprint $table) { $table->string('mail', 64)->primary()->comment('Unique Mail Address'); $table->unsignedBigInteger('user_id')->comment('User reference'); - $table->foreign('user_id')->references('user_id')->on('users') + $table->foreign('user_id')->references('user_id')->on('acc_user') ->onDelete('cascade')->onUpdate('cascade'); $table->string('label', 64)->nullable()->comment('User-Custom Mail label'); $table->boolean('prim_addr')->default(true)->comment('True if primary'); diff --git a/src/c2dl/database/migrations/2019_12_01_200000_create_acc_auth_table.php b/src/c2dl/database/migrations/2019_12_01_200000_create_acc_auth_table.php index 67a41fe..8e72850 100644 --- a/src/c2dl/database/migrations/2019_12_01_200000_create_acc_auth_table.php +++ b/src/c2dl/database/migrations/2019_12_01_200000_create_acc_auth_table.php @@ -15,7 +15,7 @@ public function up() { Schema::connection('acc')->create('acc_auth', function (Blueprint $table) { $table->unsignedBigInteger('user_id')->comment('User reference'); - $table->foreign('user_id')->references('user_id')->on('users') + $table->foreign('user_id')->references('user_id')->on('acc_user') ->onDelete('cascade')->onUpdate('cascade'); $table->unsignedBigInteger('auth_id')->default(0)->comment('Id for auth entry'); $table->primary(['user_id', 'auth_id']); diff --git a/src/c2dl/database/migrations/2019_12_01_400000_create_acc_linked_table.php b/src/c2dl/database/migrations/2019_12_01_400000_create_acc_linked_table.php index 261cdd5..ab61102 100644 --- a/src/c2dl/database/migrations/2019_12_01_400000_create_acc_linked_table.php +++ b/src/c2dl/database/migrations/2019_12_01_400000_create_acc_linked_table.php @@ -18,7 +18,7 @@ public function up() $table->string('link_ident', 64)->comment('Unique link identifier'); $table->primary(['link_service', 'link_ident']); $table->unsignedBigInteger('user_id')->comment('User reference'); - $table->foreign('user_id')->references('user_id')->on('users') + $table->foreign('user_id')->references('user_id')->on('acc_user') ->onDelete('cascade')->onUpdate('cascade'); $table->string('label', 64)->nullable()->comment('User-Custom Link label'); $table->dateTime('validate_at')->nullable() diff --git a/src/c2dl/database/migrations/2019_12_01_500000_create_main_news_table.php b/src/c2dl/database/migrations/2019_12_01_500000_create_main_news_table.php index 8adcd42..3e7f4e6 100644 --- a/src/c2dl/database/migrations/2019_12_01_500000_create_main_news_table.php +++ b/src/c2dl/database/migrations/2019_12_01_500000_create_main_news_table.php @@ -20,7 +20,7 @@ public function up() $table->primary(['news_id', 'page_number', 'lang']); // not foreign (seperate database) $table->unsignedBigInteger('author_id') - ->comment('Author id (acc.users/user_id)'); + ->comment('Author id (acc.acc_user/user_id)'); $table->string('title', 64)->nullable()->comment('News title'); $table->longText('content')->comment('News content'); $table->string('preview_image')->comment('Preview image path')->nullable(); From 930769aa296853b012385b8ce0cc2702c98d206f Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sun, 13 Nov 2022 09:39:31 +0000 Subject: [PATCH 4/9] Add migration to edit users table --- src/c2dl/database/factories/UserFactory.php | 2 +- ...2_11_13_092303_restructure_users_table.php | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/c2dl/database/migrations/2022_11_13_092303_restructure_users_table.php diff --git a/src/c2dl/database/factories/UserFactory.php b/src/c2dl/database/factories/UserFactory.php index 1c89e83..938acab 100644 --- a/src/c2dl/database/factories/UserFactory.php +++ b/src/c2dl/database/factories/UserFactory.php @@ -26,7 +26,7 @@ public function definition() 'name' => $this->faker->name(), 'email' => $this->faker->unique()->safeEmail(), 'active' => false, - 'validate_at' => $this->faker > now(), + 'validate_at' => now(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), ]; diff --git a/src/c2dl/database/migrations/2022_11_13_092303_restructure_users_table.php b/src/c2dl/database/migrations/2022_11_13_092303_restructure_users_table.php new file mode 100644 index 0000000..0cf9a1b --- /dev/null +++ b/src/c2dl/database/migrations/2022_11_13_092303_restructure_users_table.php @@ -0,0 +1,48 @@ +rename('acc_user', 'users'); + Schema::connection('acc')->table('users', function (Blueprint $table) { + $table->dropColumn('created_at', 'updated_at'); + + $table->string('email')->unique()->comment('Unique user email'); + $table->string('password')->comment('User chosen password'); + }); + + // Had to split this into another call to `table` due to "duplicate column" errors. + Schema::connection('acc')->table('users', function (Blueprint $table) { + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::connection('acc')->table('users', function (Blueprint $table) { + $table->dropColumn('email', 'password', 'created_at', 'updated_at'); + }); + + Schema::connection('acc')->table('users', function (Blueprint $table) { + $table->dateTime('created_at')->useCurrent()->comment('Created'); + $table->dateTime('updated_at')->nullable()->comment('Updated, null if not'); + }); + + Schema::connection('acc')->rename('users', 'acc_user'); + } +}; From ee8ea785e8e31bcc12bdd54abd9c30ce10e1827e Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sun, 13 Nov 2022 09:40:59 +0000 Subject: [PATCH 5/9] User should be active by default --- src/c2dl/app/Http/Controllers/Auth/RegisterController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/c2dl/app/Http/Controllers/Auth/RegisterController.php b/src/c2dl/app/Http/Controllers/Auth/RegisterController.php index 1159ab8..bf0287f 100644 --- a/src/c2dl/app/Http/Controllers/Auth/RegisterController.php +++ b/src/c2dl/app/Http/Controllers/Auth/RegisterController.php @@ -77,6 +77,7 @@ protected function create(array $data) 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), + 'active' => 1 ]); } } From 539186f1e089ca3a698e03020bc38d614114607c Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sun, 13 Nov 2022 20:16:30 +0000 Subject: [PATCH 6/9] Implement API tokens for users --- .../Http/Controllers/Auth/LoginController.php | 52 ++++++++++++++++--- src/c2dl/app/Models/User.php | 4 +- src/c2dl/resources/views/auth/login.blade.php | 2 +- src/c2dl/routes/api.php | 6 +-- 4 files changed, 51 insertions(+), 13 deletions(-) diff --git a/src/c2dl/app/Http/Controllers/Auth/LoginController.php b/src/c2dl/app/Http/Controllers/Auth/LoginController.php index feac36c..9a2acab 100644 --- a/src/c2dl/app/Http/Controllers/Auth/LoginController.php +++ b/src/c2dl/app/Http/Controllers/Auth/LoginController.php @@ -3,10 +3,13 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Models\User; use Illuminate\Foundation\Auth\AuthenticatesUsers; use \Illuminate\Http\Request; -use Illuminate\Support\Facades\Validator; -use mysql_xdevapi\Exception; +use Illuminate\Http\Response as HttpResponse; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Request as FacadesRequest; class LoginController extends Controller { @@ -80,7 +83,7 @@ public function logout(Request $request) */ public function username() { - return 'user'; + return FacadesRequest::wantsJson() ? 'name' : 'user'; } /** @@ -98,13 +101,46 @@ protected function validateLogin(Request $request) $this->username() => 'required|string', 'password' => 'required|string', ]); - } - catch (\Illuminate\Validation\ValidationException $err) { + } catch (\Illuminate\Validation\ValidationException $err) { $err->redirectTo = $this->redirectToFailed; throw $err; } } + /** + * Login through /api/login. + * + * @param \Illuminate\Http\Request + * + * @return \Illuminate\Http\JsonResponse + */ + public function apiLogin(Request $request) + { + if ($this->attemptLogin($request)) { + Auth::user()->tokens()->delete(); + return response()->json([ + 'name' => "{$request->name}_token", + 'token' => Auth::user()->createToken("{$request->name}_token")->accessToken->token + ]); + } else { + return response()->json([ + 'error' => 'Something went wrong.' + ], HttpResponse::HTTP_FORBIDDEN); + } + } + + /** + * Get a user by their token using /api/validate. + * + * @param \Illuminate\Http\Request + */ + public function userByToken(Request $request) + { + $token = DB::table('personal_access_tokens')->where('token', $request->get('token'))->first(); + $user = User::where('user_id', $token->tokenable_id)->first(); + return $user->toJson(); + } + /** * Handle a login request to the application. * @@ -123,8 +159,10 @@ public function login(Request $request) // If the class is using the ThrottlesLogins trait, we can automatically throttle // the login attempts for this application. We'll key this by the username and // the IP address of the client making these requests into this application. - if (method_exists($this, 'hasTooManyLoginAttempts') && - $this->hasTooManyLoginAttempts($request)) { + if ( + method_exists($this, 'hasTooManyLoginAttempts') && + $this->hasTooManyLoginAttempts($request) + ) { $this->fireLockoutEvent($request); return $this->sendLockoutResponse($request); diff --git a/src/c2dl/app/Models/User.php b/src/c2dl/app/Models/User.php index fd65bbc..ec4b680 100644 --- a/src/c2dl/app/Models/User.php +++ b/src/c2dl/app/Models/User.php @@ -2,10 +2,10 @@ namespace App\Models; -use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { @@ -13,7 +13,7 @@ class User extends Authenticatable protected $table = 'users'; protected $primaryKey = 'user_id'; - use HasFactory, Notifiable; + use HasApiTokens, HasFactory, Notifiable; /** * The attributes that are mass assignable. diff --git a/src/c2dl/resources/views/auth/login.blade.php b/src/c2dl/resources/views/auth/login.blade.php index 4d929b3..9c045b8 100644 --- a/src/c2dl/resources/views/auth/login.blade.php +++ b/src/c2dl/resources/views/auth/login.blade.php @@ -62,7 +62,7 @@ @if (Route::has('password.request')) - + {{ __('Forgot Your Password?') }} @endif diff --git a/src/c2dl/routes/api.php b/src/c2dl/routes/api.php index ae7df4d..9fb53cb 100644 --- a/src/c2dl/routes/api.php +++ b/src/c2dl/routes/api.php @@ -1,6 +1,7 @@ get('/user', function (Request $request) { - return $request->user(); -});*/ +Route::post('login', 'Auth\LoginController@apiLogin'); +Route::post('validate', 'Auth\LoginController@userByToken'); From 08c7901048fc063175c897bdf6815d68f9c1c9a7 Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sun, 13 Nov 2022 20:46:33 +0000 Subject: [PATCH 7/9] Save current token to user row --- .../Http/Controllers/Auth/LoginController.php | 11 ++++--- src/c2dl/app/Models/User.php | 5 +++ .../2022_11_13_203900_add_token_column.php | 33 +++++++++++++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 src/c2dl/database/migrations/2022_11_13_203900_add_token_column.php diff --git a/src/c2dl/app/Http/Controllers/Auth/LoginController.php b/src/c2dl/app/Http/Controllers/Auth/LoginController.php index 9a2acab..b434d44 100644 --- a/src/c2dl/app/Http/Controllers/Auth/LoginController.php +++ b/src/c2dl/app/Http/Controllers/Auth/LoginController.php @@ -117,10 +117,14 @@ protected function validateLogin(Request $request) public function apiLogin(Request $request) { if ($this->attemptLogin($request)) { - Auth::user()->tokens()->delete(); + $user = Auth::user(); + $token = $user->createToken("{$request->name}_token"); + $user->current_token = $token->accessToken->token; + $user->save(); + return response()->json([ 'name' => "{$request->name}_token", - 'token' => Auth::user()->createToken("{$request->name}_token")->accessToken->token + 'token' => $token->accessToken->token ]); } else { return response()->json([ @@ -136,8 +140,7 @@ public function apiLogin(Request $request) */ public function userByToken(Request $request) { - $token = DB::table('personal_access_tokens')->where('token', $request->get('token'))->first(); - $user = User::where('user_id', $token->tokenable_id)->first(); + $user = User::where('current_token', $request->get('token'))->first(); return $user->toJson(); } diff --git a/src/c2dl/app/Models/User.php b/src/c2dl/app/Models/User.php index ec4b680..d5ca21f 100644 --- a/src/c2dl/app/Models/User.php +++ b/src/c2dl/app/Models/User.php @@ -44,4 +44,9 @@ class User extends Authenticatable protected $casts = [ 'validate_at' => 'datetime', ]; + + public function currentAccessToken() + { + return $this->current_token; + } } diff --git a/src/c2dl/database/migrations/2022_11_13_203900_add_token_column.php b/src/c2dl/database/migrations/2022_11_13_203900_add_token_column.php new file mode 100644 index 0000000..39d5a95 --- /dev/null +++ b/src/c2dl/database/migrations/2022_11_13_203900_add_token_column.php @@ -0,0 +1,33 @@ +table('users', function (Blueprint $table) { + $table->string('current_token', 64)->unique(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::connection('acc')->table('users', function (Blueprint $table) { + $table->dropColumn('current_token'); + }); + } +}; From 44232d346d895c5b3b6fd7ccbde8c6b244274ebd Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sun, 13 Nov 2022 20:49:40 +0000 Subject: [PATCH 8/9] Fix a bug in the new migration --- .../database/migrations/2022_11_13_203900_add_token_column.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/c2dl/database/migrations/2022_11_13_203900_add_token_column.php b/src/c2dl/database/migrations/2022_11_13_203900_add_token_column.php index 39d5a95..e62f1b4 100644 --- a/src/c2dl/database/migrations/2022_11_13_203900_add_token_column.php +++ b/src/c2dl/database/migrations/2022_11_13_203900_add_token_column.php @@ -15,7 +15,7 @@ public function up() { // Schema::connection('acc')->table('users', function (Blueprint $table) { - $table->string('current_token', 64)->unique(); + $table->string('current_token', 64)->unique()->nullable(); }); } From 7e3a16e24137c1e60e0dbb303ee96b4350dce1cf Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Fri, 25 Nov 2022 17:55:31 +0000 Subject: [PATCH 9/9] [*] Use `username` instead of `name` --- .../Http/Controllers/Auth/LoginController.php | 8 ++--- .../Controllers/Auth/RegisterController.php | 4 +-- src/c2dl/app/Models/User.php | 2 +- .../2022_11_23_205918_change_name_table.php | 36 +++++++++++++++++++ src/c2dl/resources/views/auth/login.blade.php | 2 +- .../resources/views/auth/register.blade.php | 6 ++-- 6 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 src/c2dl/database/migrations/2022_11_23_205918_change_name_table.php diff --git a/src/c2dl/app/Http/Controllers/Auth/LoginController.php b/src/c2dl/app/Http/Controllers/Auth/LoginController.php index b434d44..c4b4729 100644 --- a/src/c2dl/app/Http/Controllers/Auth/LoginController.php +++ b/src/c2dl/app/Http/Controllers/Auth/LoginController.php @@ -8,8 +8,6 @@ use \Illuminate\Http\Request; use Illuminate\Http\Response as HttpResponse; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Request as FacadesRequest; class LoginController extends Controller { @@ -83,7 +81,7 @@ public function logout(Request $request) */ public function username() { - return FacadesRequest::wantsJson() ? 'name' : 'user'; + return 'username'; } /** @@ -118,12 +116,12 @@ public function apiLogin(Request $request) { if ($this->attemptLogin($request)) { $user = Auth::user(); - $token = $user->createToken("{$request->name}_token"); + $token = $user->createToken("{$request->username}_token"); $user->current_token = $token->accessToken->token; $user->save(); return response()->json([ - 'name' => "{$request->name}_token", + 'name' => "{$request->username}_token", 'token' => $token->accessToken->token ]); } else { diff --git a/src/c2dl/app/Http/Controllers/Auth/RegisterController.php b/src/c2dl/app/Http/Controllers/Auth/RegisterController.php index bf0287f..dd1e341 100644 --- a/src/c2dl/app/Http/Controllers/Auth/RegisterController.php +++ b/src/c2dl/app/Http/Controllers/Auth/RegisterController.php @@ -59,7 +59,7 @@ public function showRegistrationForm() protected function validator(array $data) { return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], + 'username' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); @@ -74,7 +74,7 @@ protected function validator(array $data) protected function create(array $data) { return User::create([ - 'name' => $data['name'], + 'username' => $data['username'], 'email' => $data['email'], 'password' => Hash::make($data['password']), 'active' => 1 diff --git a/src/c2dl/app/Models/User.php b/src/c2dl/app/Models/User.php index d5ca21f..45b9370 100644 --- a/src/c2dl/app/Models/User.php +++ b/src/c2dl/app/Models/User.php @@ -21,7 +21,7 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', + 'username', 'email', 'password', ]; diff --git a/src/c2dl/database/migrations/2022_11_23_205918_change_name_table.php b/src/c2dl/database/migrations/2022_11_23_205918_change_name_table.php new file mode 100644 index 0000000..8e23cad --- /dev/null +++ b/src/c2dl/database/migrations/2022_11_23_205918_change_name_table.php @@ -0,0 +1,36 @@ +table('users', function (Blueprint $table) { + $table->dropColumn('name'); + + $table->string('username', 64)->unique()->comment('Unique username'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::connection('acc')->table('users', function (Blueprint $table) { + $table->dropColumn('username'); + + $table->string('name', 64)->unique()->comment('Unique user name'); + }); + } +}; diff --git a/src/c2dl/resources/views/auth/login.blade.php b/src/c2dl/resources/views/auth/login.blade.php index 9c045b8..9b0c62c 100644 --- a/src/c2dl/resources/views/auth/login.blade.php +++ b/src/c2dl/resources/views/auth/login.blade.php @@ -16,7 +16,7 @@ @csrf
- +
diff --git a/src/c2dl/resources/views/auth/register.blade.php b/src/c2dl/resources/views/auth/register.blade.php index 7afc339..6f4b0c5 100644 --- a/src/c2dl/resources/views/auth/register.blade.php +++ b/src/c2dl/resources/views/auth/register.blade.php @@ -16,12 +16,12 @@ @csrf
- +
- + - @error('name') + @error('username') {{ $message }}