Beispiel #1
0
    def test_values(self):
        user = AnonymousUserMixin()

        self.assertFalse(user.is_active)
        self.assertFalse(user.is_authenticated)
        self.assertTrue(user.is_anonymous)
        self.assertIsNone(user.get_id())
Beispiel #2
0
    def from_ip(cls, ip):
        result = sql_query("SELECT c.nutzer_id FROM computer as c "
                           "LEFT JOIN nutzer as n "
                           "ON c.nutzer_id = n.nutzer_id "
                           "WHERE c_ip = %s "
                           "AND (n.status < 8 OR n.status > 10) "
                           "ORDER BY c.nutzer_id DESC",
                           (ip,)).fetchone()
        if result is None:
            return AnonymousUserMixin()

        username = sql_query("SELECT unix_account FROM nutzer "
                             "WHERE nutzer_id = %s",
                             (result['nutzer_id'],)).fetchone()['unix_account']

        user = cls.get(username)
        if not user:
            logger.warning("User %s could not be fetched from LDAP",
                           username, extra={'data': {
                               'username': username,
                               'user_id': result['nutzer_id'],
                           }})
            return AnonymousUserMixin()

        return user
Beispiel #3
0
def user_from_ip(ip):
    dormitory = dormitory_from_ip(ip)
    if not dormitory:
        return AnonymousUserMixin()

    datasource = dormitory.datasource
    if datasource is None:
        return AnonymousUserMixin()

    return datasource.user_class.from_ip(ip)
Beispiel #4
0
def load_user(username):
    """Loads a User object from/into the session at every request
    """
    if request.blueprint == "documents" or request.endpoint == "static":
        return AnonymousUserMixin()

    dormitory = dormitory_from_name(session.get('dormitory', None))
    if dormitory:
        return dormitory.datasource.user_class.get(username)
    else:
        return AnonymousUserMixin()
Beispiel #5
0
    def from_ip(cls, ip):
        userData = do_api_call('find?ip=' + ip)

        if userData is not None:
            return cls(userData['login'], userData['name'], 'passive')
        else:
            return AnonymousUserMixin()
Beispiel #6
0
 def get(cls, username):
     """Static method for flask-login user_loader,
     used before _every_ request.
     """
     if username in config:
         return cls(username)
     else:
         return AnonymousUserMixin()
Beispiel #7
0
 def get(cls, username, **kwargs):
     """Static method for flask-login user_loader,
     used before _every_ request.
     """
     user = LdapConnector.fetch_user(username)
     if user:
         return cls(user['uid'], user['name'], user['mail'], **kwargs)
     return AnonymousUserMixin()
Beispiel #8
0
def load_user(username):
    """Loads a User object from/into the session at every request
    """
    dormitory = dormitory_from_name(session.get('dormitory', None))
    if dormitory:
        return dormitory.datasource.user_class.get(username)
    else:
        return AnonymousUserMixin()
Beispiel #9
0
def verify_password(email, password):
    if email == '':
        g.current_user = AnonymousUserMixin()
        return True
    user = User.query.filter_by(email=email).first()
    if not user:
        return False
    g.current_user = user
    return user.verify_password(password)
Beispiel #10
0
    def from_ip(cls, ip):
        """Return a user based on an ip.

        If there is no user associated with this ip, return AnonymousUserMixin.
        """
        account_name = db.session.query(IP).filter_by(ip=ip).one().account
        if not account_name:
            return AnonymousUserMixin()

        return cls.get(account_name)
Beispiel #11
0
    def from_ip(cls, ip):
        try:
            sql_nutzer = (db.session.query(Nutzer).join(Computer).filter_by(
                c_ip=ip).filter(Nutzer.status.in_(ACTIVE_STATUS)).one())
        except NoResultFound:
            return AnonymousUserMixin()

        username = sql_nutzer.unix_account

        user = cls.get(username)
        if not user:
            logger.warning("User %s could not be fetched from LDAP",
                           username,
                           extra={
                               'data': {
                                   'username': username,
                                   'user_id': sql_nutzer.nutzer_id,
                               }
                           })
            return AnonymousUserMixin()

        return user
Beispiel #12
0
def login():
    """
    Log in view.
    """
    if g.user is not None and g.user.is_authenticated:
        return redirect(url_for('home'))
    g.user = AnonymousUserMixin()
    form = SigninForm()
    if form.validate_on_submit():
        user = UserController().get(email=form.email.data)
        login_user(user)
        g.user = user
        session['email'] = form.email.data
        identity_changed.send(current_app._get_current_object(),
                              identity=Identity(user.id))
        return form.redirect('home')
    return render_template('login.html', form=form)
Beispiel #13
0
 def __init__(self):
     AnonymousUserMixin.__init__(self)
     self.locale = 'de'
     self.timezone = 'Europe/Berlin'
Beispiel #14
0
 def user_loader(user_id):
     if user_id:
         return User.query.get(user_id)
     else:
         return AnonymousUserMixin()
Beispiel #15
0
 def __init__(self):
     AnonymousUserMixin.__init__(self)
     self.locale = 'de'
     self.timezone = 'Europe/Berlin'
Beispiel #16
0
def user_from_ip(ip):
    datasource = datasource_from_ip(ip)
    if datasource is not None:
        return datasource.user_class.from_ip(ip)
    else:
        return AnonymousUserMixin()