Skip to content
Snippets Groups Projects
UserController.php 4.01 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()
    {
Martin's avatar
Martin committed
        return response()->json(Auth::user(), 200);
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();

Martin's avatar
Martin committed
            return response()->json(['message' => 'user successfully deleted'], 200);

        } catch (\Exception $e) {

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

    public function changePassword(Request $request){

        if (!(Hash::check($request->get('current-password'), Auth::user()->password))) {
            // The passwords matches
            return response()->json(['message' => 'Your current password does not matches with the password you provided. Please try again.'], 400);
        }

        if(strcmp($request->get('current-password'), $request->get('new-password')) == 0){
            //Current password and new password are same
            return response()->json(['message' => 'New Password cannot be same as your current password. Please choose a different password.'], 400);
        }

        $validatedData = $request->validate([
            'current-password' => 'required',
            'new-password' => 'required|string|min:6|confirmed',
        ]);

        //Change Password
        $user = Auth::user();
        $user->password = bcrypt($request->get('new-password'));
        $user->save();


        return response()->json(['message' => 'Password changed successfully'], 200);
    }