Example #1
0
 /**
  * validate super user
  *
  * 1. check if access token exists
  * 2. check if access token valid
  * 3. validate scope
  **/
 public function validateSuperUser()
 {
     //1. check if access token exists
     if ($this->request->input('access_token')) {
         //2. check if access token valid
         $ip = $_SERVER['REMOTE_ADDR'];
         $checked_token = SessionModel::accesstoken($this->request->input('access_token'))->first();
         if (!$checked_token) {
             $this->errors->add('Access', 'Access token tidak valid');
         } elseif ($checked_token && in_array($checked_token['ip'], [env('AUTH_API_HOST', 'apimanager')])) {
             return response()->json(JSend::success($this->request->input())->asArray());
         } elseif ($checked_token && Carbon::parse($checked_token->expired_at)->format('Y-m-d H:i:s') >= Carbon::now()->format('Y-m-d H:i:s') && is_null($checked_token->session->closed_at)) {
             //3. validate scope
             foreach ($checked_token->scopes as $key => $value) {
                 if (in_array($value['name'], $this->request->input('scope'))) {
                     return response()->json(JSend::success($this->request->input())->asArray());
                 }
             }
             $this->errors->add('Access', 'Tidak diijinkan untuk mengakses resorce ini');
         } else {
             $this->errors->add('Access', 'Access token sudah tidak berlaku');
         }
     } else {
         $this->errors->add('Access', 'Tidak ada access token');
     }
     if ($this->errors->count()) {
         \Log::info(json_encode($this->getError()));
         return response()->json(JSend::error($this->request->input(), $this->getError())->asArray());
     }
     return response()->json(JSend::success($this->request->input())->asArray());
 }
 /**
  * destroy session using access token
  *
  * 1. check token
  * 2. close session
  * @param array request parameter, host
  * @return boolean
  */
 public function destroy_session($request_param, $host)
 {
     //1. check token
     $token = SessionModel::accesstoken($request_param['access_token'])->ip($host)->first();
     if (!$token) {
         $this->errors->add('Access', 'Token tidak valid');
     }
     //2. close session
     if (!$this->errors->count()) {
         $token->closed_at = Carbon::now()->format('Y-m-d H:i:s');
         if (!$token->save()) {
             $this->errors->add('Access', $token->getError());
         }
     }
     if ($this->errors->count()) {
         return false;
     }
     return true;
 }