hadiabedzadeh/cheguevaraldap

User logged in via LDAP

dev-master 2022-12-14 06:05 UTC

This package is auto-updated.

Last update: 2024-06-14 09:31:55 UTC


README

use ldap-connection

  • Read source and write your login code by yourself
  • C# code must compile and upload to another server

Usage:

        $validator = Validator::make($request->all(), [
            'username' => 'required|string',
            'password' => 'required|string|min:2',
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors(), \Illuminate\Http\Response::HTTP_UNPROCESSABLE_ENTITY);
        }

        $username = \request()->username;
        $type     = (filter_var($username, FILTER_VALIDATE_EMAIL)) ? Controller::LOGIN_TYPE_EMAIL : Controller::LOGIN_TYPE_USERNAME;

        $us = DB::selectOne("SELECT * FROM users WHERE {$type} = :username", ['username' => $username]);

        $credential = [
            $type      => $username,
            'password' => \request()->password
        ];

        $token = auth()->guard('api')->attempt($credential, ['exp' => (auth()->guard('api')->factory()->getTTL() * 60) * 10]);

        if(!$token AND isset($us->ldap_user)){
            if(Helper::cheGuevaraLdap($us->username, \request()->password)){
                $token = auth()->guard('api')->attempt($validator->validated());
            }
        }

        if(!$token){
            return self::response('error', \Illuminate\Http\Response::HTTP_OK);
        }

        $loginById = auth()->guard('web')->loginUsingId(auth()->guard('api')->id(), true);

        return self::response([
            'access_token' => $token,
            'token_type'   => 'bearer',
            'user'         => auth()->guard('api')->user(),
            'expires_in'   => (auth()->guard('api')->factory()->getTTL() * 60) * 10,
            'roles'        => auth()->guard('api')->user()->getRoleNames(),
            'permissions'  => auth()->guard('api')->user()->getPermissionsViaRoles()->pluck('name'),
            'loginById' => isset($loginById) ? $loginById : null
        ], \Illuminate\Http\Response::HTTP_OK);