Dhruv Yadav
Dhruv Yadav

Reputation: 41

laravel authentication in restapi

My code is given below.

I am facing problem. When I want check by username and password.
password change every time. so I am unable to give result by email password.

public function login()
{   
    $data = Input::all();

    print_r($data);

    $email= $data['email'];
    $password= bcrypt($data['password']);

    echo $password;

    $count = User::where('email', '=',$email);
    $count->Where('password', '=', $password);
    $count_row=$count->get()->count();

    echo $count_row; die;

    if($count_row==1)
    {
        $users = User::where('email', '=',$email);
        $users->Where('password', '=', $password);
        $users->select(
            'id','name','email', 
            'username','address','zip', 
            'city','country','phone_number', 
            'domain','type') ;

        $result=$users->get();

        $response= response()->json(['success'=>true,'message'=>'success', 'data'=>$result]); 

        return $response;
    }
    else
    {
        $response= response()->json(['success'=>false,'message'=>'Not Login successfull']); 

        return $response;            
    }
}

Upvotes: 0

Views: 62

Answers (1)

321zeno
321zeno

Reputation: 1274

According to the docs, the correct way to verify a password is

Hash::check('plain-text', $hashedPassword)

So you can rewrite your function as

public function login()
{ 
    $email = Input::get('email');
    $user = User::where('email', '=', $email)->first();

    if (!$user) {
        return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
    }

    if (!Hash::check(Input::get('password'), $user->password)) {
        return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
    }

    return response()->json(['success'=>true,'message'=>'success', 'data' => $user]); 
}

Or even simpler

public function authenticate(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (!Auth::attempt($credentials)) {
        return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
    }

    $user =  User::where('email', '=', $request->get('email'))->first()

    return response()->json(['success'=>true,'message'=>'success', 'data' => $user]); 
}

Upvotes: 1

Related Questions