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']})
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 + '/')
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'] } )
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'] } )
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'] })
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'] } )
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'] })
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'] } )
def GET(self): if web.input().get('action') == 'logout': users_model.session_login(0) return web.template.render('views/').index()