def setup_app(settings): """Set up the application.""" # Init CouchDB model. print("initializing model") init_model(settings) # Add design docs to CouchDB. path = sys.path[0] + "/_design" print("loading views at %s" % path) loader = FileSystemDocsLoader(path) loader.sync(Session.auth) # Add a user, group, and permission to CouchDB. user_name = "admin" user_password = "******" group_name = "administrators" perm_name = "superpowers" print("loading data") perm = Permission(name=perm_name) perm.save() group = Group(name=group_name) group.permissions.append(perm) group.save() user = User.create(user_name, user_password) user.groups.append(group) user.save()
def login(context, request): """Display a login prompt.""" if request.method != 'POST': return {'error': ''} if 'username' not in request.params: return {'error': 'Username is required.'} if 'password' not in request.params: return {'error': 'Password is required.'} username = request.params['username'] password = request.params['password'] users = User.view('pyramid/user_list', key=username) if len(users) == 0: return {'error': 'User not found.'} if not users.first().authenticate(password): return {'error': 'Bad password.'} headers = remember(request, username) redirect = '%s/auth/postlogin' % request.application_url return HTTPFound(location=redirect, headers=headers)