NETBien.backend/app/Http/Controllers/MyUserController.php
2025-06-01 12:32:11 -06:00

129 lines
2.9 KiB
PHP

<?php namespace App\Http\Controllers;
/**
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
use App\Http\Requests\User\UserUpdateRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Notsoweb\ApiResponse\Enums\ApiResponse;
use Notsoweb\LaravelCore\Supports\NotifySupport;
/**
* Usuario autenticado
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
* @version 1.0.0
*/
class MyUserController extends Controller
{
/**
* Obtener usuario autenticado
*/
public function show()
{
return ApiResponse::OK->response([
'user' => auth()->user()
]);
}
/**
* Actualizar
*/
public function update(UserUpdateRequest $request)
{
$form = $request->validated();
if (isset($form['photo'])) {
auth()->user()->updateProfilePhoto($form['photo']);
}
auth()->user()->update($form);
return ApiResponse::OK->response();
}
/**
* Eliminar
*/
public function destroy()
{
auth()->user()->delete();
return ApiResponse::OK->response();
}
/**
* Confirmar contraseña
*
* Autoriza una acción si la contraseña es correcta.
*/
public function confirmPassword(Request $request)
{
$form = $request->validate([
'password' => ['required', 'string', 'min:8']
]);
if (!Hash::check($form['password'], auth()->user()->password)) {
NotifySupport::errorIn('password', __('validation.password'));
}
return ApiResponse::OK->response();
}
/**
* Actualizar contraseña
*/
public function updatePassword(Request $request)
{
$form = $request->validate([
'current_password' => ['required', 'string'],
'password' => ['required', 'string', 'min:8', 'confirmed']
]);
if (!Hash::check($form['current_password'], auth()->user()->password)) {
NotifySupport::errorIn('current_password', __('validation.password'));
}
auth()->user()->update([
'password' => bcrypt($form['password'])
]);
return ApiResponse::OK->response();
}
/**
* Eliminar foto de perfil
*/
public function destroyPhoto()
{
auth()->user()->deleteProfilePhoto();
return ApiResponse::OK->response();
}
/**
* Permisos
*/
public function permissions()
{
return ApiResponse::OK->response([
'permissions' => auth()->user()->getAllPermissions()
]);
}
/**
* Roles
*/
public function roles()
{
return ApiResponse::OK->response([
'roles' => auth()->user()
->roles()
->select('id', 'name', 'description')
->get()
]);
}
}