public function run() { $faker = Faker\Factory::create(); $users = User::all(); foreach ($users as $user) { UserToken::create(['user_id' => $user->id, 'user_ip' => $faker->ipv4, 'device_token' => $faker->password, 'device_name' => $faker->colorName, 'token' => str_repeat($user->id, 6), 'last_usage' => \Carbon\Carbon::now()]); } }
protected function performChecks() { $token = $this->request->getHeader(Config::get('app.authHeader')); if (empty($token)) { throw new UnAuthorizedException('Missing Header'); } $this->userId = UserToken::getValidUserId($token, $this->request->getAttribute('ip_address')); if (empty($this->userId)) { // Log attempt then remove token? throw new UnAuthorizedException('Unauthorized'); } }
/** * Verifica el usuario y contraseña dados. Si son correctos genera un access token y un refresh token. * <p> * Ejemplo: * </p> * </p> * <p>JSON DE ENTRAA</p> * <p> * { *"user": "******", *"password": "******", *"imei": "XCVSDF2343" *} * </p> * <p>JSON DE SALIDA</p> * <p> * { * "error": false, * "msg": "OK", * "access_token": "OrrotWVZJXyGx42RnnBkdtXrwrk2gTrtVUuBr5dJiwPJtN3X", * "refresh_token": "q16d7NHS2b3M8OTgTKqbgBoRKsZahUWqk3tuTujHqjETS6dq", * "valid_until": "2015-07-08 15:00:00" * } * </p> * * @param Request $request * * @return Array * */ public function login(Request $request) { $resp = array(); $status = 200; $resp['error'] = true; $resp['msg'] = 'Ocurrió un error'; $resp['access_token'] = null; $resp['refresh_token'] = null; $in = json_decode($request->getContent()); $imei = $request->header('X-imei'); if (property_exists($in, 'user') && property_exists($in, 'password')) { $user = User::where('login', '=', $in->user)->where('password', '=', $in->password)->first(); if ($user) { $access_token = $this->generateToken(); $refresh_token = $this->generateToken(); $userToken = new UserToken(); $userToken->access_token = $access_token; $userToken->refresh_token = $refresh_token; $userToken->id_user = $user->id; $userToken->imei = $imei; $userToken->save(); $hoy = Carbon::now(); $hoy->addDay(); $resp['error'] = false; $resp['msg'] = 'OK'; $resp['access_token'] = $access_token; $resp['refresh_token'] = $refresh_token; $resp['valid_until'] = $hoy->toDateTimeString(); } else { $status = 401; $resp['msg'] = 'Login y/o password inválidos'; } } else { $resp['msg'] = 'El login y/o password son obligatorios'; } return new Response($resp, $status); }
/** * Almacena un posicion con la informacion reportada en el json de entrada * * <p>Ejemplo:</p> * <p>JSON DE ENTRADA:</p> * <p> { "latitude": 4.712, "longitude": -74.454, "updatetime": "2015-07-07 16:35:00", "os": "android", "imei": "XCVSDF2343" } * </p> * <p>JSON DE SALIDA:</p> * <p> { "error": false, "msg": "OK", "data": { "id_position": 11 } } * </p> * * @param Request $request * * @return Json */ public function store(Request $request) { $status = 200; $resp = array(); $resp['error'] = true; $resp['msg'] = 'Ocurrió un error'; $resp['data'] = null; //$in = json_decode($request->input('values'), false); $in = json_decode($request->getContent()); $access_token = $request->header('X-Session-Token'); $imei = $request->header('X-imei'); $os = $request->header('X-OS'); $resp['msg'] = 'Faltan campos que son obligatorios'; if (property_exists($in, 'latitude') && property_exists($in, 'longitude') && property_exists($in, 'updatetime') && !is_null($imei) && !is_null($os) && !is_null($access_token)) { $resp['msg'] = 'Acess token inválido'; $status = 401; $user = UserToken::where('access_token', '=', $access_token)->where('is_valid', '=', true)->where('ts_valid_until', '>=', 'NOW()')->first(); if ($user) { $position = new Position(); $position->latitude = $in->latitude; $position->longitude = $in->longitude; $position->id_user = $user->id_user; $position->updatetime = $in->updatetime; $position->save(); $status = 201; $resp['error'] = false; $resp['msg'] = 'OK'; $resp['data'] = array(); $resp['data']['id_position'] = $position->id_position; } } return new Response($resp, $status); }