Skip to content
Snippets Groups Projects
UserController.php 2.98 KiB
Newer Older
<?php

namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Http\Request;
Martin's avatar
Martin committed
use Illuminate\Support\Facades\Auth;

class UserController extends Controller
{
    public function allUsers()
    {
        return response()->json( User::all(), 200);
Martin's avatar
Martin committed

    public function getProfile()
    {
        return response()->json(Auth::user(), 201);
Martin's avatar
Martin committed
    }

    public function getUser($id)
    {
        try {
            $user = User::findOrFail($id);

            return response()->json($user, 200);

        } catch (\Exception $e) {

            return response()->json(['message' => 'user not found!'], 404);
        }

    }

    public function updateProfile(Request $request)
    {
        $this->validate($request, [
            'name' => 'required|string',
            'email' => 'required|email|',
            'password' => 'confirmed',
        ]);

        try {
            $user = Auth::user();
            if( $user->name != $request->name) {
                $user->name = $request->name;
            }
            if( $user->email != $request->email){
                $this->validate($request, [
                    'email' => 'unique:users']);
                $user->email = $request->email;
            }
            if( isset($request->password)) {
                $plainPassword = $request->input('password');
                $user->password = app('hash')->make($plainPassword);
            }
            $user->save();

            return response()->json( $user, 200);

        } catch (\Exception $e) {

            return response()->json(['message' => 'user not found!'], 404);
        }

    }

    public function updateUser(Request $request, $id)
    {
        $this->validate($request, [
            'name' => 'required|string',
            'role' => 'required|string',
            'email' => 'required|email|',
            'password' => 'confirmed',
        ]);
        try {
            $user = User::findOrFail($id);
            if( $user->name != $request->name) {
                $user->name = $request->name;
            }
            if( $user->email != $request->email){
                $this->validate($request, [
                    'email' => 'unique:users']);
                $user->email = $request->email;
            }
            if( isset($request->password)) {
                $plainPassword = $request->input('password');
                $user->password = app('hash')->make($plainPassword);
            }
            $user->save();

            return response()->json($user, 200);

        } catch (\Exception $e) {

            return response()->json(['message' => 'user not found!'], 404);
        }

    }

    public function deleteUser($id)
    {
        try {
            $user = User::findOrFail($id);
            $user->delete();

            return response()->json(['message' => 'user successfully deleted'], 404);

        } catch (\Exception $e) {

            return response()->json(['message' => 'user not found!'], 404);
        }
    }

}