Convert dữ liệu login từ md5 sang laravel hash
Naht
Đã trả lời thg 10 2, 2021 1:05 CH
chào mọi người, sau khi tìm hiểu khắp các diễn đàn laravel, github, stackoverflow và chắp vá chỉnh sửa thì mình đã giải quyết được vấn đề. Nhân đây mình post luôn kết quả của mình cho mọi người cũng tham khảo nếu gặp phải vấn đề giống mình
public function login(Request $request)
{
//validate incoming request
$this->validate($request, [
'email' => 'required|string',
'password' => 'required|string',
]);
$user = User::where('username', '=', $request->email)->first();
if (isset($user)) { //check nếu tồn tại username do hệ thống cũ của mình không bắt buộc email
if ($user->password == md5(md5($request->password))) { // nếu vẫn còn là pass bằng md5+md5
$user->password = app('hash')->make($request->password); // chuyển luôn sang dạng mới
$user->save(); //lưu lại
$login_type = filter_var($request->email, FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; //kiểm tra xem là vừa nhập vào là username hay email
$credentials = [$login_type => $request->email, 'password' => $request->password];
try {
if (!$token = Auth::attempt($credentials)) {
return response()->json(['message' => 'Đăng nhập thất bại1']);
}
return response()->json(['token' => $token, 'message' => 'Đăng nhập thành công1', 'user' => $user]);
} catch (\Exception $e) {
return response()->json(['message' => 'Đăng nhập thất bạic']);
}
} else { //nếu tồn tại user nhưng pass không đúng có thể là khách nhập sai pass hoặc pass đã chuyển sang loại mới
$login_type = filter_var($request->email, FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; //lại check username or email
$credentials = [$login_type => $request->email, 'password' => $request->password];
if (!$token = Auth::attempt($credentials)) {
return response()->json(['message' => 'Đăng nhập thất bại2']);
}
$user = Auth::user();
return response()->json(['token' => $token, 'message' => 'Đăng nhập thành công2', 'user' => $user]);
}
$user = Auth::user();
} else { //dùng cho khách tạo mới sẽ dùng cái này do code của mình chuyển sang dùng email thay cho username luôn
$credentials = $request->only(['email', 'password']);
if (!$token = Auth::attempt($credentials)) {
return response()->json(['message' => 'Đăng nhập thất bại']);
}
$user = Auth::user();
return response()->json(['token' => $token, 'message' => 'Đăng nhập thành công3', 'user' => $user]);
}
}
do code mình vừa viết vừa test nên hơi ngáo :v
+2
Tổ chức
Chưa có tổ chức nào.