from pyramid.view import view_config from pyramid.httpexceptions import HTTPFound from pyramid.security import remember, forget from .security import check_password, set_password @view_config(route_name="users_auth") def sign_in_out(request): username = request.POST.get('username') if username: if check_password(request, username, request.POST.get('password')): headers = remember(request, username) else: headers = forget(request) else: headers = forget(request) return HTTPFound(location=request.route_url('home'), headers=headers) @view_config(route_name='users_register', renderer='templates/register.jinja2', permission="edit") def register(request): return {"navgroup": "user"} @view_config(route_name="users_json", renderer="prettyjson", request_method='POST', permission="edit") def json_newuser(request): jsb = request.json_body if request.db['users'].count({"username": jsb['username']}) > 0: fail_reason = "There is already a user with this username" return {"status": 'fail', "info": fail_reason} elif len(jsb['username']) < 5: fail_reason = "The username must be at least 5 characters" return {"status": 'fail', "info": fail_reason} elif len(jsb['password']) < 5: fail_reason = "The password must be at least 5 characters" return {"status": 'fail', "info": fail_reason} else: set_return = set_password(request, jsb['username'], jsb['password']) return {'status': "OK"} @view_config(route_name="users_json", renderer="prettyjson", permission="edit", request_method='GET') def json_getuser(request): user_list = [] users = list(request.db['users'].find()) for user in users: user_list.append(user['username']) return {'users': user_list} @view_config(route_name="users_json", renderer="prettyjson", permission="edit", request_method='DELETE') def json_deleteuser(request): request.db['users'].remove({'username': request.json_body['username']}) user_list = [] users = list(request.db['users'].find()) for user in users: user_list.append(user['username']) return {'users': user_list} @view_config(route_name="users_json", renderer="prettyjson", request_method='PUT', permission="edit") def json_updateuser(request): jsb = request.json_body if len(jsb['username']) < 5: fail_reason = "The username must be at least 5 characters" return {"status": 'fail', "info": fail_reason} elif len(jsb['password']) < 5: fail_reason = "The password must be at least 5 characters" return {"status": 'fail', "info": fail_reason} else: set_return = set_password(request, jsb['username'], jsb['password']) return {'status': "OK"}