Exemplo n.º 1
0
    def PUT(self):
        """
        Changes password for specified user_id
        """

        payload = json.loads(web.data())
        user_model = users_model()

        web.header('Content-Type', 'application/json')

        if context.user_id() > 0:
            user_id = context.user_id()
        else:
            token_user_id = user_model.password_recovery_user(
                payload.get('token', ''))
            if token_user_id > 0:
                user_id = token_user_id
            else:
                return json.dumps({
                    'success': False,
                    'messages': ['Unauthorized request']
                })

        if user_model.update_password(user_id, payload['password']):
            # TODO if token used, invalidate token
            if payload.get('autologin',
                           False) and context.user_id() != user_id:
                # Auto-login user whose password's changed.
                users_model.session_login(user_id)
            return json.dumps({
                'success': True,
                'messages': ['Password changed']
            })
        return json.dumps({'success': False, 'messages': ['Database error']})
Exemplo n.º 2
0
    def GET(self):
        """
        If action parameter is specified =='logout', logs out user. Else displays login screen
        """
        if context.user_id() == 0:
            return render.login()

        if web.input().get('action', '') == 'logout':
            users_model.session_login(0)

        raise web.seeother(path + '/')
Exemplo n.º 3
0
    def PUT(self, username=''):
        """
        Stores user details into database.
        And, if needed, populates tables for first-time user
        """
        payload = json.loads(web.data())
        password = payload.get('password')
        email = payload.get('email')

        web.header('Content-Type', 'application/json')

        if password is None or email is None or username == '' or email == '':
            return json.dumps(
                {
                    'success': False,
                    'messages': ['Username/email/password cannot be empty']
                }
            )

        user_id = users_model().register(username, password, email)

        if user_id == 0:
            return json.dumps(
                {
                    'success': False,
                    'messages': ['User already exists']
                }
            )
        elif user_id > 0:
            if payload.get('autologin', False):
                users_model.session_login(user_id)
            web.ctx.status = '201 Created'
            policies_model.populate_policies(user_id, start_date)
            score_model.insert_score(user_id, 1, 1, start_date)
            score_model.insert_score(user_id, 2, 1, start_date)
            return json.dumps(
                {
                    'success': True,
                    'messages': ['Successfully registered.']
                }
            )
        else:
            return json.dumps(
                {
                    'success': False,
                    'messages': ['Database error']
                }
            )
Exemplo n.º 4
0
    def PUT(self, a, arg1=0):
        """
        Changes password for specified user_id
        """

        user_id = int(arg1)
        payload = json.loads(web.data())
        user_model = users_model()

        web.header('Content-Type', 'application/json')

        if not (user_id > 0):
            return json.dumps(
                {
                    'success': False,
                    'messages': ['Invalid user_id specified']
                }
            )

        if user_id == context.user_id() or user_id == user_model.password_recovery_user(payload.get('token', '')):
            if user_model.update_password(user_id, payload['password']):
                if payload.get('autologin', False) and context.user_id() != user_id:
                    # Auto-login user whose password's changed.
                    users_model.session_login(user_id)
                return json.dumps(
                    {
                        'success': True,
                        'messages': ['Password changed']
                    }
                )
            return json.dumps(
                {
                    'success': False,
                    'messages': ['Database error']
                }
            )

        return json.dumps(
            {
                'success': False,
                'messages': ['Unauthorized request']
            }
        )
Exemplo n.º 5
0
    def POST(self):
        """
        Authenticates user
        """
        web.header('Content-Type', 'application/json')

        if context.user_id() > 0:
            users_model.session_login(context.user_id())
            return json.dumps({
                'success': True,
                'user_id': context.user_id(),
                'username': context.username(),
                'messages': ['Successful login']
            })
        else:
            return json.dumps({
                'success': False,
                'messages': ['Invalid username/password']
            })
Exemplo n.º 6
0
    def PUT(self):
        """
        Changes password for specified user_id
        """

        payload = json.loads(web.data())
        user_model = users_model()

        web.header('Content-Type', 'application/json')

        if context.user_id() > 0:
            user_id = context.user_id()
        else:
            token_user_id = user_model.password_recovery_user(payload.get('token', ''))
            if token_user_id > 0:
                user_id = token_user_id
            else:
                return json.dumps(
                    {
                        'success': False,
                        'messages': ['Unauthorized request']
                    }
                )

        if user_model.update_password(user_id, payload['password']):
            # TODO if token used, invalidate token
            if payload.get('autologin', False) and context.user_id() != user_id:
                # Auto-login user whose password's changed.
                users_model.session_login(user_id)
            return json.dumps(
                {
                    'success': True,
                    'messages': ['Password changed']
                }
            )
        return json.dumps(
            {
                'success': False,
                'messages': ['Database error']
            }
        )
Exemplo n.º 7
0
    def PUT(self, username=''):
        """
        Stores user details into database.
        And, if needed, populates tables for first-time user
        """
        payload = json.loads(web.data())
        password = payload.get('password')
        email = payload.get('email')

        web.header('Content-Type', 'application/json')

        if password is None or email is None or username == '' or email == '':
            return json.dumps({
                'success':
                False,
                'messages': ['Username/email/password cannot be empty']
            })

        user_id = users_model().register(username, password, email)

        if user_id == 0:
            return json.dumps({
                'success': False,
                'messages': ['User already exists']
            })
        elif user_id > 0:
            if payload.get('autologin', False):
                users_model.session_login(user_id)
            web.ctx.status = '201 Created'
            policies_model.populate_policies(user_id, start_date)
            score_model.insert_score(user_id, 1, 1, start_date)
            score_model.insert_score(user_id, 2, 1, start_date)
            return json.dumps({
                'success': True,
                'messages': ['Successfully registered.']
            })
        else:
            return json.dumps({
                'success': False,
                'messages': ['Database error']
            })
Exemplo n.º 8
0
    def POST(self):
        """
        Authenticates user
        """
        web.header('Content-Type', 'application/json')

        if context.user_id() > 0:
            users_model.session_login(context.user_id())
            return json.dumps(
                {
                    'success': True,
                    'messages': ['Successful login']
                }
            )
        else:
            return json.dumps(
                {
                    'success': False,
                    'messages': ['Invalid username/password']
                }
            )
Exemplo n.º 9
0
    def GET(self):

        if web.input().get('action') == 'logout':
            users_model.session_login(0)

        return web.template.render('views/').index()