duanha3539 2019-05-22 08:10
浏览 106

如何使用lat&long登录用户并根据Laravel中的当前位置查找位置?

In my login API I have "email" and "password" for login and now I want to pass lat and long in my login API and my new body request will look like this:

{
    "email":"john-smith@ovadamd.com",
    "password": "admin123",
    "lat": "12",
    "long": "22"
}

I want to show this user belong to which facility and I have facility location table where I am storing lat and long and I want to login user with lat and long.

This is my login 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
        ]
    ]);

I am handling multiple scenarios in my login API that's why it looks large and now I want to login user with lat and long from my current position around 800m nearest location.

How can I achieve this functionality?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 树莓派与pix飞控通信
    • ¥15 自动转发微信群信息到另外一个微信群
    • ¥15 outlook无法配置成功
    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题