Skip to content

Commit

Permalink
usurios admin y vistas de edicion (#29)
Browse files Browse the repository at this point in the history
* solucion de rutas breeze

* script para compliar tailwind

* modularizando mediante componentes laravel

* fechas de creacion en cursos - datos de prueba

* componente creado con el comando 'php artisan make:componet NombreComponente' permite integrar componete con BD o mas funciones

* sombreado interactivo segun pestaña seleccionada - no funciona bien!

* integro el componete se los cursos mas recientes

* README

* + paquete para autenticacion por Laravel Socialite

* progreso de autenticacion por github

* actualizo BD con campos para autenticacion de usuarios -  solo github, apliable para google y otros

* configuraciones para autenticacion - modelo y controlador

* boton de login con github mediante componente en login y register

* componente navbar redirecciona a nuevo register

* para index devuele los cursos mas recientes primero

* los cursos que sean creados menores a 30 dias muestrann el tag Nuevo

* el recuento de cursos, usuarios y cursosVendidos creado por componente e implementado en la vista Conócenos

* correccion de errores en inicio de secion

* se solicita confirmar el email para poder ser registrado en la BD

* Evito el modo oscuro en laravel desde tailwind

* modo claro/oscuro backgroud en conócenos

* nuevos tema de color para compativilizar el modo claro/oscuro

* validacion de usuario y otros estilos

* solucion de interfaz de recuperar contraseña

* acceso para registrados

* avatares para conocenos

* login y register usando guest -> para usuarios no logueados

* modo claro/oscuro

* solucion el commit 'destruccion del proyecto'

* logo

* la verificacion de email tiene  un mejor aspecto

* añado propiedad is_admin a users para restricciones de contenido

* usurios admin y vistas de edicion
  • Loading branch information
Leo-Spj authored Nov 8, 2023
1 parent 44e086a commit 247934e
Show file tree
Hide file tree
Showing 5 changed files with 187 additions and 5 deletions.
111 changes: 111 additions & 0 deletions app/Http/Controllers/UserController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?php

namespace App\Http\Controllers;

use App\Models\User;
use Auth;
use Illuminate\Http\Request;

class UserController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}

/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}

/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}

/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}

/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}

/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
//
}

/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}


//funciones que reciben un correo y actualiza un usuario a admin
public function quitarAdmin(Request $request)
{
$user = User::where('email', $request->email)->first();
$user->is_admin = false;
$user->save();
return redirect('/profile');
}
public function añadirAdmin(Request $request)
{
$user = User::where('email', $request->email)->first();
$user->is_admin = true;
$user->save();
return redirect('/profile');
}
//switch admin
public function switchAdmin(Request $request)
{
// Obtiene el usuario autenticado
$authenticatedUser = Auth::user();

// Busca el usuario por su correo electrónico en la base de datos
$user = User::where('email', $request->email)->first();

if ($user) {
// Verifica que el usuario autenticado no sea el mismo que se está modificando
if ($user->id !== $authenticatedUser->id) {
// Realiza la conmutación del estado 'is_admin'
$user->is_admin = !$user->is_admin;

// Guarda los cambios en la base de datos
$user->save();

return redirect('/profile')->with('success', 'Cambios guardados exitosamente');
} else {
return redirect('/profile')->with('error', 'No puedes quitarte a ti mismo el rol de administrador');
}
} else {
// El usuario no se encontró en la base de datos
return redirect('/profile')->with('error', 'Usuario no encontrado');
}
}

}
1 change: 1 addition & 0 deletions app/Http/Kernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class Kernel extends HttpKernel
*/
protected $middlewareAliases = [
'auth' => \App\Http\Middleware\Authenticate::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
Expand Down
24 changes: 24 additions & 0 deletions app/Http/Middleware/AdminMiddleware.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class AdminMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
if (auth()->check() && auth()->user()->is_admin){
return $next($request);
} else{
return redirect('/dashboard');
}
}
}
40 changes: 40 additions & 0 deletions resources/views/profile/edit.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,46 @@

<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8 space-y-6">

{{-- si el usuario es admin se le muestra lo siguiente --}}
@if (auth()->user()->is_admin)
<div class="p-4 sm:p-8 bg-white dark:bg-gray-800 shadow sm:rounded-lg ">
<div class="max-w-xl">

<form action="/admin/switch" method="POST" class="mt-6 space-y-6">
@csrf
@method('PATCH')

<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
{{ __('Switch de Admin') }}
</h2>

<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
{{ __('Poporciona un email para alternar su cargo') }}
</p>

<div class="mt-6 ">
<x-input-label for="email_crear_admin" value="{{ __('Email') }}" class="sr-only " />
<x-text-input class="max-w-full"
id="email_crear_admin"
name="email"
type="email"
class="mt-1 block w-full"
placeholder="{{ __('Email') }}"
/>
{{-- <x-input-error :messages="$errors->userDeletion->get('email')" class="mt-2" /> --}}
</div>

<div class="mt-6 ">
<x-danger-button class="">
{{ __('Switch') }}
</x-danger-button>
</div>
</form>
</div>
</div>
@endif

<div class="p-4 sm:p-8 bg-white dark:bg-gray-800 shadow sm:rounded-lg">
<div class="max-w-xl">
@include('profile.partials.update-profile-information-form')
Expand Down
16 changes: 11 additions & 5 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

use App\Http\Controllers\Auth\ProviderController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;

use App\Http\Controllers\VideosController;
Expand Down Expand Up @@ -70,12 +71,12 @@

Route::get('/cursos', 'index');
Route::get('/tienda', 'tienda');
Route::get('/cursos/gestion', 'create');
Route::post('/cursos/gestion', 'store');
Route::get('/cursos/gestion', 'create')->middleware('admin');
Route::post('/cursos/gestion', 'store')->middleware('admin');
Route::get('/cursos/{idCurso}', 'show');
Route::get('/cursos/{idCurso}/editar', 'edit');
Route::patch('/cursos/{idCurso}', 'update'); // patch es para actualizar, en el html usar el metodo POST y agregar @method('PATCH') en el formulario
Route::delete('/cursos/eliminar', 'destroy');
Route::get('/cursos/{idCurso}/editar', 'edit')->middleware('admin');
Route::patch('/cursos/{idCurso}', 'update')->middleware('admin'); // patch es para actualizar, en el html usar el metodo POST y agregar @method('PATCH') en el formulario
Route::delete('/cursos/eliminar', 'destroy')->middleware('admin');

});

Expand All @@ -91,3 +92,8 @@
Route::get('/carrito', function () {
return view('carrito');
});

// Profile - añadir o quitar admin
Route::controller(UserController::class)->group(function(){
Route::patch('/admin/switch', 'switchAdmin')->middleware('admin');
});

0 comments on commit 247934e

Please sign in to comment.