def _get_user(ctx: rest.Context, bump_login: bool) -> Optional[model.User]: if not ctx.has_header('Authorization'): return None auth_token = None try: auth_type, credentials = ctx.get_header('Authorization').split(' ', 1) if auth_type.lower() == 'basic': username, password = base64.decodebytes( credentials.encode('ascii')).decode('utf8').split(':', 1) auth_user = _authenticate_basic_auth(username, password) elif auth_type.lower() == 'token': username, token = base64.decodebytes( credentials.encode('ascii')).decode('utf8').split(':', 1) auth_user, auth_token = _authenticate_token(username, token) else: raise HttpBadRequest( 'ValidationError', 'Only basic or token HTTP authentication is supported.') except ValueError as err: msg = ( 'Authorization header values are not properly formed. ' 'Supplied header {0}. Got error: {1}') raise HttpBadRequest( 'ValidationError', msg.format(ctx.get_header('Authorization'), str(err))) if bump_login and auth_user.user_id: users.bump_user_login_time(auth_user) if auth_token is not None: user_tokens.bump_usage_time(auth_token) ctx.session.commit() return auth_user
def process_request(self, request, _response): ''' Bind the user to request. Update last login time if needed. ''' request.context.user = self._get_user(request) if request.get_param_as_bool('bump-login') \ and request.context.user.user_id: users.bump_user_login_time(request.context.user) request.context.session.commit()
def _get_user(ctx: rest.Context, bump_login: bool) -> Optional[model.User]: if not ctx.has_header('Authorization'): return None auth_token = None try: auth_type, credentials = ctx.get_header('Authorization').split(' ', 1) if auth_type.lower() == 'basic': username, password = base64.decodebytes( credentials.encode('ascii')).decode('utf8').split(':', 1) auth_user = _authenticate_basic_auth(username, password) elif auth_type.lower() == 'token': username, token = base64.decodebytes( credentials.encode('ascii')).decode('utf8').split(':', 1) auth_user, auth_token = _authenticate_token(username, token) else: raise HttpBadRequest('ValidationError', '기본 및 토큰 HTTP 인증만을 지원합니다.') except ValueError as err: msg = ('인증 헤더 값이 적절한 형식이 아닙니다. ' '전달된 헤더 {0}. 오류: {1}') raise HttpBadRequest( 'ValidationError', msg.format(ctx.get_header('Authorization'), str(err))) if bump_login and auth_user.user_id: users.bump_user_login_time(auth_user) if auth_token is not None: user_tokens.bump_usage_time(auth_token) ctx.session.commit() return auth_user
def process_request(ctx: rest.Context) -> None: ''' Bind the user to request. Update last login time if needed. ''' auth_user = _get_user(ctx) if auth_user: ctx.user = auth_user if ctx.get_param_as_bool('bump-login', default=False) and ctx.user.user_id: users.bump_user_login_time(ctx.user) ctx.session.commit()
def _get_user(ctx: rest.Context, bump_login: bool) -> Optional[model.User]: if not ctx.has_header("Authorization"): return None auth_token = None try: auth_type, credentials = ctx.get_header("Authorization").split(" ", 1) if auth_type.lower() == "basic": username, password = ( base64.decodebytes(credentials.encode("ascii")) .decode("utf8") .split(":", 1) ) auth_user = _authenticate_basic_auth(username, password) elif auth_type.lower() == "token": username, token = ( base64.decodebytes(credentials.encode("ascii")) .decode("utf8") .split(":", 1) ) auth_user, auth_token = _authenticate_token(username, token) else: raise HttpBadRequest( "ValidationError", "Only basic or token HTTP authentication is supported.", ) except ValueError as err: msg = ( "Authorization header values are not properly formed. " "Supplied header {0}. Got error: {1}" ) raise HttpBadRequest( "ValidationError", msg.format(ctx.get_header("Authorization"), str(err)), ) if bump_login and auth_user.user_id: users.bump_user_login_time(auth_user) if auth_token is not None: user_tokens.bump_usage_time(auth_token) ctx.session.commit() return auth_user
def process_request(ctx): ''' Bind the user to request. Update last login time if needed. ''' ctx.user = _get_user(ctx) if ctx.get_param_as_bool('bump-login') and ctx.user.user_id: users.bump_user_login_time(ctx.user) ctx.session.commit()
def test_bump_user_login_time(user_factory, fake_datetime): user = user_factory() with fake_datetime("1997-01-01"): users.bump_user_login_time(user) assert user.last_login_time == datetime(1997, 1, 1)
def test_bump_user_login_time(user_factory, fake_datetime): user = user_factory() with fake_datetime('1997-01-01'): users.bump_user_login_time(user) assert user.last_login_time == datetime(1997, 1, 1)