Esempio n. 1
0
async def sign_up(request):
    data = request.json
    try:
        assert 'email' in data
        assert 'password' in data
        assert 'nickname' in data
    except AssertionError:
        return json({"error": "Empty field"})

    try:
        email = validate_email(data['email'])
        data['email'] = email["email"]  # replace with normalized form
    except EmailNotValidError as e:
        return json({"error": "Email illegal"})

    try:
        await User.get(email=data['email'])
        return json({"error": "Email already existed"})
    except DoesNotExist:
        pass

    try:
        await User.get(nickname=data['nickname'])
        return json({"error": "Nickname already used"})
    except DoesNotExist:
        pass

    data['password'] = sha256(data['password'])
    try:
        user = await User.create(**data)
        auth.login_user(request, user)
        return json({"id": user.id})
    except Exception:
        return json({"error": "Request data too long"})
Esempio n. 2
0
    async def post(self, request):
        username = request.json.get('username')
        passwd = request.json.get('password')

        try:
            assert username
            assert passwd
        except AssertionError:
            return json(
                {
                    "message":
                    "Invalid login request, username and/or password missing"
                },
                status=401)
        try:
            usr = await objects.get(User, username=username)

            if usr and usr.verify_passwd(passwd):
                auth.login_user(request, usr)
                return json(
                    {
                        'message':
                        "Login success!",
                        'user':
                        model_to_dict(
                            usr, backrefs=True, exclude={User.passwd, User.id})
                    },
                    status=200)
            return json({"message": "Wrong credential(s)"}, status=404)

        except DoesNotExist:
            return json({"message": "No user found with that username"},
                        status=404)
Esempio n. 3
0
 def login(self):
     username = request.json['username']
     password = request.json['password']
     user = auth.authenticate(username, password)
     if user:
         auth.logout_user()
         auth.login_user(user)
         return response_manager.LOGIN_SUCCESS_RESPONSE
     else:
         return response_manager.LOGIN_FAILED_RESPONSE
Esempio n. 4
0
async def login(request):
    data = request.json
    try:
        assert 'email' in data
        assert 'password' in data
    except AssertionError:
        return json({"error": "Empty field"})

    try:
        user = await User.get(email=data['email'])
    except DoesNotExist:
        return json({"error": "User not existed"})

    if sha256(data['password']) != user.password:
        return json({"error": "Password mismatch"})
    auth.login_user(request, user)
    return json({"id": user.id})
Esempio n. 5
0
def login_with_payload(payload):
    login_with_payload_form = LoginWithPayloadForm()
    if login_with_payload_form.validate_on_submit():
        user = login_user(current_app, db, payload)
        if user:
            return redirect(url_for(".dashboard"))

    return render_template("auth/login-with-payload.html", login_with_payload_form=login_with_payload_form)
Esempio n. 6
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)
Esempio n. 7
0
async def register(request):
    errors = {}
    form = RegistrationForm(request)
    if request.method == 'POST' and form.validate():
        username = form.username.data
        password = await crypto.hash_SHA512(form.password.data)
        # we need to create a new user
        try:
            user = await db_objects.create(Operator,
                                           username=username,
                                           password=password)
            login_user = User(id=user.id, name=user.username)
            auth.login_user(request, login_user)
            return response.redirect("/")
        except:
            # failed to insert into database
            errors['validate_errors'] = "failed to create user"
    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('register.html')
    content = template.render(links=links, form=form, errors=errors)
    return response.html(content)