Пример #1
0
    def decroated(self, data, req_info, curs):
        auth = Authenticator()
        session_id = data.get('session_id')
        session = auth.get_session(session_id)

        f = UserFilter(session, {'id': session.user_id}, {}, {})
        user = f.filter_one_obj(curs)

        try:
            if user.environment_id != session.environment_id:
                raise HelixauthError('User and session from different environments')
            if not user.is_active:
                raise UserInactive()
            auth.check_access(session, Service.TYPE_AUTH, method.__name__, req_info)

            data.pop('session_id', None)
            custom_actor_info = data.pop('custom_actor_info', None)

            try:
                result = method(self, data, req_info, session, curs)
            except Exception, e:
                data['environment_id'] = session.environment_id
                _add_log_info(data, session, custom_actor_info)
                raise e

            _add_log_info(data, session, custom_actor_info)
            return result
Пример #2
0
 def check_access(self, data, req_info, session, curs=None):
     a = Authenticator()
     srv_type = data.get('service_type', None)
     p = data.get('property', None)
     try:
         a.check_access(session, srv_type, p, req_info)
         return response_ok(user_id=session.user_id,
             environment_id=session.environment_id, access='granted')
     except (UserAccessDenied, SessionIpChanged):
         return response_ok(user_id=session.user_id,
             environment_id=session.environment_id, access='denied')