/** * Obtiene un usuario si está logueado o si lo puede obtener del request o cualquier otro medio. * Si el usuario es nulo, se puede llegar a llamar a requerir_autenticacion (si la operacion lo requiere). * En caso de errores, guardarlos y enviarlos en la respuesta. * * @param request $request * * @return rest_usuario el usuario logueado o null si es anonimo */ public function get_usuario(request $request = null) { $auth_header = $request->headers('HTTP_AUTHORIZATION', null); if ($auth_header === null) { return; } $well_formed_header = preg_match('/Bearer (.+)/i', $auth_header, $result); if ($well_formed_header === 0 || $well_formed_header === false) { return; } $token = $result[1]; $info = $this->decoder->decode($token); if ($info === null) { return; } $usuario = new rest_usuario(); $usuario->set_usuario($info->get_user_id()); $usuario->set_perfiles($info->get_scopes()); return $usuario; }