В моем API входа в систему у меня есть «email» и «пароль» для входа в систему, и теперь я хочу передать lat и long в своем API входа в систему, и мой новый запрос тела будет выглядеть как this:
{
"email":"john-smith@ovadamd.com",
"password": "admin123",
"lat": "12",
"long": "22"
}
Я хочу показать, что этот пользователь принадлежит к какому объекту, и у меня есть таблица местоположения объекта, где я храню значения lat и long, и я хочу войти в систему пользователя с параметрами lat и long.
Это мой логин API:
public function fdLogin(Request $request)
{
$credentials = $request->only('email', 'password');
$rules = [
'email' => 'required|email',
'password' => 'required',
];
$validator = Validator::make($credentials, $rules);
if ($validator->fails()) {
return response()->json([
'status' => false,
'message' => __('messages.validation_errors'),
'errors' => $validator->messages()
]);
}
try {
$is_already_loggedIn = $this->user->where('email', $request->input('email'))->value('is_loggedIn');
if ($is_already_loggedIn) {
return response()->json([
'status' => false,
'message' => 'You are already logged In on some module'
], 500);
}
$customClaims = ['exp' => Carbon::now()->addYear()->timestamp];
// Attempt to verify the credentials and create a token for the user
if (!$token = JWTAuth::attempt($credentials, $customClaims)) {
return response()->json([
'status' => false,
'message' => 'We can`t find an account with this credentials.'
], 401);
}
} catch (JWTException $e) {
// Something went wrong with JWT Auth.
return response()->json([
'status' => false,
'message' => 'Failed to login, please try again.'
], 500);
}
$currentUser = Auth::user();
$currentUser->basicInfo = $this->userBasicInfo->where('user_id', $currentUser->id)->first();
$access_module = $this->userAccessModule->where('user_id', $currentUser->id)->first();
$is_super_admin = DB::table('users')->select('users.is_super_admin')->where('id',$currentUser->id)->first();
$specialitiesAndRoles = DB::table('roles')
->join('user_facility', 'roles.id', 'user_facility.role_id')
->where('user_facility.user_id', Auth::user()->id)
->select('user_facility.facility_id','user_facility.speciality_id','user_facility.is_facility_supervisor','user_facility.priv_key','roles.name','user_facility.role_id')
->get();
$superadmin = $is_super_admin->is_super_admin;
$specialities = (object) $specialitiesAndRoles;
$response = ['is_super_admin' => $superadmin, 'facilities' => $specialities];
$userRoles = DB::table('roles')
->join('user_facility', 'roles.id', 'user_facility.role_id')
->where('user_facility.user_id', Auth::user()->id)
->value('roles.name');
if ($access_module) {
$module = $this->modules->find($access_module->module_id);
$user = DB::table('verify_users')->where('user_id', $currentUser->id)->first();
if ($user) {
DB::table('verify_users')->where('id', $user->id)->update([
'token' => $token,
]);
DB::table('verify_users')->insert([
'token' => $token,
'user_id' => $currentUser->id,
'role' => $userRoles
]);
} else {
DB::table('verify_users')->insert([
'token' => $token,
'user_id' => $currentUser->id,
'role' => $userRoles
]);
}
if ($module->slug == 'medical-doctors') {
$md_db = DB::connection('doctorDB');
$user = $md_db->table('auth_token')->where('user_id', $currentUser->id)->first();
$md_db = DB::connection('doctorDB');
$user = $md_db->table('auth_token')->where('user_id', $currentUser->id)->first();
if ($user) {
$md_db->table('auth_token')->where('id', $user->id)->update([
'token' => $token,
'isValid' => 1,
]);
} else {
$md_db->table('auth_token')->insert([
'token' => $token,
'isValid' => 1,
'user_id' => $currentUser->id
]);
}
}
} else {
$module = NULL;
}
$user_data = $this->GetUserInfo();
return response()->json([
'status' => true,
'message' => 'Login successfully',
'data' => [
'token' => $token,
'userData' => $currentUser,
'userInfo' => $user_data,
'privileges' => $response,
'module' => $module
]
]);
Я обрабатываю несколько сценариев в своем API входа в систему, поэтому он выглядит большим, и теперь я хочу войти в систему с помощью lat и long с моей текущей позиции на расстоянии около 800 м от ближайшего местоположения.
Как мне добиться этой функциональности?