Exemple #1
0
 async def post(self, request):
     form = LoginForm(request)
     errors = {}
     if form.validate():
         username = form.username.data
         password = form.password.data
         try:
             query = await db_model.operator_query()
             user = await db_objects.get(query, username=username)
             if await user.check_password(password):
                 if not user.active:
                     form.username.errors = ["account is deactivated, cannot log in"]
                 else:
                     try:
                         user.last_login = datetime.datetime.utcnow()
                         await db_objects.update(user)  # update the last login time to be now
                         if user.current_operation is not None:
                             # update that operations' event log that the user just signed in
                             await db_objects.create(db_model.OperationEventLog, operator=None,
                                                     operation=user.current_operation, message="{} signed in".format(user.username))
                         access_token, output = await self.responses.get_access_token_output(
                             request,
                             {'user_id': user.id, 'auth': 'cookie'},
                             self.config,
                             self.instance)
                         refresh_token = await self.instance.auth.generate_refresh_token(request, {'user_id': user.id, 'auth': 'cookie'})
                         output.update({
                             self.config.refresh_token_name(): refresh_token
                         })
                         template = env.get_template('login.html')
                         content = template.render(links=await respect_pivot(links, request), form=form,
                                                   errors=errors, access_token=access_token,
                                                   refresh_token=refresh_token, config={}, view_utc_time=False)
                         resp = response.html(content)
                         # resp = response.redirect("/")
                         resp.cookies[self.config.cookie_access_token_name()] = access_token
                         resp.cookies[self.config.cookie_access_token_name()]['httponly'] = True
                         resp.cookies[self.config.cookie_refresh_token_name()] = refresh_token
                         resp.cookies[self.config.cookie_refresh_token_name()]['httponly'] = True
                         return resp
                     except Exception as e:
                         print("post login error:" + str(e))
                         errors['validate_errors'] = "failed to update login time"
             else:
                 form.username.errors = ["Username or password invalid"]
         except Exception as e:
             print(str(sys.exc_info()[-1].tb_lineno) + " " + str(e))
             form.username.errors = ['username or password invalid']
     errors['username_errors'] = '<br>'.join(form.username.errors)
     errors['password_errors'] = '<br>'.join(form.password.errors)
     template = env.get_template('login.html')
     content = template.render(links=await respect_pivot(links, request), form=form, errors=errors,
                               config={}, view_utc_time=False)
     return response.html(content)
Exemple #2
0
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.from_username(str(form.username.data))
        if user and user.validate(form.password.data):
            login_user(user)
            flash("Logged in successfully.")
            return form.redirect("index")
        else:
            flash("Password incorrect.")
    return render_template("login.html", form=form, title="Login")
Exemple #3
0
 async def post(self, request):
     form = LoginForm(request)
     errors = {}
     if form.validate():
         username = form.username.data
         password = form.password.data
         try:
             query = await db_model.operator_query()
             user = await db_objects.get(query, username=username)
             if await user.check_password(password):
                 if not user.active:
                     errors[
                         'validate_errors'] = "account is deactivated, cannot log in"
                 else:
                     try:
                         user.last_login = datetime.datetime.now()
                         await db_objects.update(
                             user)  # update the last login time to be now
                         access_token, output = await self.responses.get_access_token_output(
                             request, {'user_id': user.id}, self.config,
                             self.instance)
                         refresh_token = await self.instance.auth.generate_refresh_token(
                             request, {'user_id': user.id})
                         output.update({
                             self.config.refresh_token_name():
                             refresh_token
                         })
                         resp = response.redirect("/")
                         resp.cookies[self.config.cookie_access_token_name(
                         )] = access_token
                         resp.cookies[self.config.cookie_access_token_name(
                         )]['httponly'] = True
                         resp.cookies[self.config.cookie_refresh_token_name(
                         )] = refresh_token
                         resp.cookies[self.config.cookie_refresh_token_name(
                         )]['httponly'] = True
                         return resp
                     except Exception as e:
                         print(e)
                         errors[
                             'validate_errors'] = "failed to update login time"
             else:
                 errors['validate_errors'] = "Username or password invalid"
         except Exception as e:
             print(e)
     errors['username_errors'] = '<br>'.join(form.username.errors)
     errors['password_errors'] = '<br>'.join(form.password.errors)
     template = env.get_template('login.html')
     content = template.render(links=links, form=form, errors=errors)
     return response.html(content)
Exemple #4
0
def login():
    form = LoginForm()
    messages = Message.query.filter_by(deleted=False).all()
    if form.validate_on_submit():
        user = User.from_username(str(form.username.data))
        if user and user.validate(form.password.data):
            login_user(user)
            flash("Logged in successfully.")
            return form.redirect("planet")
        else:
            flash("Password incorrect.")
    return render_template("login.html",
                           form=form,
                           title="Login",
                           messages=messages)
Exemple #5
0
 async def get(self, request):
     form = LoginForm(request)
     errors = {}
     errors['username_errors'] = '<br>'.join(form.username.errors)
     errors['password_errors'] = '<br>'.join(form.password.errors)
     template = env.get_template('login.html')
     content = template.render(links=links, form=form, errors=errors)
     return response.html(content)
Exemple #6
0
 async def get(self, request):
     form = LoginForm(request)
     errors = {}
     errors['username_errors'] = '<br>'.join(form.username.errors)
     errors['password_errors'] = '<br>'.join(form.password.errors)
     template = env.get_template('login.html')
     content = template.render(links=await respect_pivot(links, request), form=form, errors=errors, config={},
                               view_utc_time=False)
     return response.html(content)
Exemple #7
0
async def login(request):
    form = LoginForm(request)
    errors = {}
    if request.method == 'POST' and form.validate():
        username = form.username.data
        password = form.password.data
        try:
            user = await db_objects.get(Operator, username=username)
            if await user.check_password(password):
                login_user = User(id=user.id, name=user.username)
                auth.login_user(request, login_user)
                return response.redirect("/")
        except:
            errors['validate_errors'] = "Username or password invalid"
    errors['token_errors'] = '<br>'.join(form.csrf_token.errors)
    errors['username_errors'] = '<br>'.join(form.username.errors)
    errors['password_errors'] = '<br>'.join(form.password.errors)
    template = env.get_template('login.html')
    content = template.render(links=links, form=form, errors=errors)
    return response.html(content)
Exemple #8
0
 async def get(self, request):
     form = LoginForm(request)
     errors = {}
     errors["username_errors"] = "<br>".join(form.username.errors)
     errors["password_errors"] = "<br>".join(form.password.errors)
     template = env.get_template("login.html")
     content = template.render(
         links=await respect_pivot(links, request),
         form=form,
         errors=errors,
         config={},
         view_utc_time=False,
         http="https" if use_ssl else "http",
         ws="wss" if use_ssl else "ws",
     )
     return response.html(content)