From 80637327eec438c295075bc646de1665c2aa5b2c Mon Sep 17 00:00:00 2001 From: cgonzalesmo Date: Wed, 19 Oct 2022 22:15:33 -0500 Subject: [PATCH] Habilitar user por correo (Solo admi) - validado --- app/Http/Controllers/Api/UserController.php | 38 +++++++++++-------- app/Models/User.php | 6 +++ app/Models/role.php | 11 ++++++ database/factories/RoleFactory.php | 23 +++++++++++ ...22_10_18_004708_create_role_user_table.php | 37 ++++++++++++++++++ database/seeders/DatabaseSeeder.php | 37 +++++++++++++++--- routes/api.php | 3 +- 7 files changed, 134 insertions(+), 21 deletions(-) create mode 100644 database/factories/RoleFactory.php create mode 100644 database/migrations/2022_10_18_004708_create_role_user_table.php diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 8fc519c..f1cca5d 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -5,28 +5,36 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\User; +use App\Models\Estandar; use Illuminate\Support\Facades\Hash; class UserController extends Controller { public function register(Request $request){ - $request->validate([ - 'name'=>'required', - 'lastname'=>'required', - 'email'=>'required|email|unique:users', - 'password'=>'required|confirmed' + $request->validate([ + 'email'=>'required|email|unique:users' ]); + $userAuth = auth()->user()->roles[0]->name; + if($userAuth==="Admin"){ + $user = new User(); + $user->name = "null"; + $user->lastname = "null"; + $user->email = $request->email; + $user->password = "null"; + $user->save(); + $user->roles()->attach(2); + return response()->json([ + 'message'=>'Correo registrado exitosamente', + 'userAuth'=>$user, + ]); + } + else{ + return response()->json([ + "status" => 0, + "message" => "Correo no registrado", + ], 404); + } - $user = new User(); - $user->name = $request->name; - $user->lastname = $request->lastname; - $user->email = $request->email; - $user->password = Hash::make($request->password); - $user->save(); - - return response()->json([ - 'message'=>'registro exitoso' - ]); } public function login(Request $request){ diff --git a/app/Models/User.php b/app/Models/User.php index 97c0422..45c816e 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -36,4 +36,10 @@ class User extends Authenticatable public function providers(){ return $this->hasMany(Provider::class,'id_user'); } + + public function roles(){ + return $this->belongsToMany(role::class,'role_user','id_user', 'id_rol'); + } + + } diff --git a/app/Models/role.php b/app/Models/role.php index aa72606..b66e059 100644 --- a/app/Models/role.php +++ b/app/Models/role.php @@ -8,4 +8,15 @@ use Illuminate\Database\Eloquent\Model; class role extends Model { use HasFactory; + + protected $table ='roles'; + + protected $fillable = [ + 'name' + ]; + public $timestamps = false; + + public function users(){ + return $this->belongsToMany(User::class,'id_rol'); + } } diff --git a/database/factories/RoleFactory.php b/database/factories/RoleFactory.php new file mode 100644 index 0000000..673a47d --- /dev/null +++ b/database/factories/RoleFactory.php @@ -0,0 +1,23 @@ + + */ +class RoleFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->name(), + ]; + } +} diff --git a/database/migrations/2022_10_18_004708_create_role_user_table.php b/database/migrations/2022_10_18_004708_create_role_user_table.php new file mode 100644 index 0000000..5e35391 --- /dev/null +++ b/database/migrations/2022_10_18_004708_create_role_user_table.php @@ -0,0 +1,37 @@ +id(); + $table->timestamps(); + $table->foreignId('id_user') + ->constrained('users') + ->onDelete('cascade'); + $table->foreignId('id_rol') + ->constrained('roles') + ->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('role_user'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index f242b1f..d59341b 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -15,38 +15,63 @@ class DatabaseSeeder extends Seeder */ public function run() { + //roles + \App\Models\role::factory()->create([ + "name"=>"Admin" + ]); + \App\Models\role::factory()->create([ + "name"=>"User" + ]); //Usuarios - \App\Models\User::factory()->create([ - "name"=>"Alexis", - "lastname"=>"Arroyo", - "email"=>"aarroyoh@unsa.edu.pe", - "password"=>Hash::make("luisangel"), + \App\Models\User::factory()->create([ + "name"=>"Omar", + "lastname"=>"Apoyo", + "email"=>"admin@unsa.edu.pe", + "password"=>Hash::make("123456"), ]); + \App\Models\User::find(1)->roles()->attach(1); + + \App\Models\User::factory()->create([ + "name"=>"Alexis", + "lastname"=>"Arroyo", + "email"=>"aarroyoh@unsa.edu.pe", + "password"=>Hash::make("luisangel"), + ]); + \App\Models\User::find(2)->roles()->attach(1); + \App\Models\User::factory()->create([ "name"=>"Fernando", "lastname"=>"Araoz", "email"=>"faraoz@unsa.edu.pe", "password"=>Hash::make("123456"), ]); + \App\Models\User::find(3)->roles()->attach(1); + \App\Models\User::factory()->create([ "name"=>"Jhonatan", "lastname"=>"Acuña", "email"=>"jacuna@unsa.edu.pe", "password"=>Hash::make("123456"), ]); + \App\Models\User::find(4)->roles()->attach(1); + \App\Models\User::factory()->create([ "name"=>"Carlos", "lastname"=>"Gonzales", "email"=>"cgonzalesmo@unsa.edu.pe", "password"=>Hash::make("123456"), ]); + \App\Models\User::find(5)->roles()->attach(1); + + \App\Models\User::factory()->create([ "name"=>"Christian", "lastname"=>"Sullca", "email"=>"csullcap@unsa.edu.pe", "password"=>Hash::make("123456"), ]); + \App\Models\User::find(6)->roles()->attach(1); \App\Models\User::factory()->create([ "name"=>"Brayan", @@ -54,6 +79,7 @@ class DatabaseSeeder extends Seeder "email"=>"bguillenn@unsa.edu.pe", "password"=>Hash::make("123456"), ]); + \App\Models\User::find(7)->roles()->attach(1); //Estandares @@ -162,5 +188,6 @@ class DatabaseSeeder extends Seeder ;\App\Models\EstadosValores::factory()->create([ "valor"=>"Concluido", ]); + } } diff --git a/routes/api.php b/routes/api.php index 14c1701..7c1f83f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -20,7 +20,7 @@ use App\Http\Controllers\Api\EvidenciasController; use App\Http\Controllers\Api\LoginController; use App\Http\Controllers\Api\NarrativasController; -Route::post('register', [UserController::class, 'register']); + Route::post('login', [UserController::class, 'login'])->name('login'); Route::get('login/{provider}', [LoginController::class, 'redirectToProvider']); @@ -42,6 +42,7 @@ Route::middleware("auth:sanctum")->group (function(){ //rutas auth Route::get('user-profile', [UserController::class,'userProfile']); Route::get('logout', [UserController::class, 'logout']); + Route::post('register', [UserController::class, 'register']); //rutas estandar Route::post('estandar', [EstandarController::class,'createEstandar']);