Пример #1
0
    def post(self, request):
        auth_service = AuthService()
        response_service = ResponseService()
        user_service = UserService()

        try:
            request_data = json.loads(request.body.decode('utf-8'))
        except ValueError as e:
            return response_service.json_decode_exception({'error': str(e)})

        valid_user = UserSerializer(data=request_data)

        if valid_user.is_valid() is False:
            return response_service.invalid_id({'error': valid_user.errors})

        if user_service.email_exists(email=request_data['email']):
            return response_service.failure({'error': 'Email already exists'})

        try:
            user = auth_service.create_user(
                email=request_data['email'],
                password=request_data['password'],
                first_name=request_data['first_name'],
                last_name=request_data['last_name'],
            )
        except Exception as e:
            return response_service.service_exception({'error': str(e)})

        if user is None:
            return response_service.failure({'error': 'Failed to authenticate.'})

        # Login user before returning
        return LoginView.as_view()(self.request)
Пример #2
0
    def create_user(self, email, password, first_name, last_name):
        user_service = UserService()
        user = user_service.create(email=email,
                                   password=password,
                                   first_name=first_name,
                                   last_name=last_name)

        return user_service.get(user.pk)
Пример #3
0
    def login(self):
        form = LoginForm()
        service = UserService()

        if request.method == 'POST' and form.validate_on_submit():
            user = service.login(form.username.data, form.password.data)
            if user:
                flash('Login Successfully.', 'success')
                login_user(user, form.remember.data)
                next_path = request.args.get('next', request.path)
                return redirect(next_path)
            else:
                raise Exception('Username or Password Incorrect.')

        return render_template('user/login.html', form=form)
Пример #4
0
    def authenticate(self, request, email, password):
        user_service = UserService()

        user = authenticate(email=email, password=password)

        if user is None:
            return None

        if user.last_login is not None:
            user.second_last_login = user.last_login
            user.save()

        login(request, user)

        return user_service.get(user.pk)
Пример #5
0
    def get(self, request, user_id):

        user_service = UserService()
        response_service = ResponseService()

        valid_user = UserIdSerializer(data={'id': user_id})

        if valid_user.is_valid() is False:
            return response_service.invalid_id({'error': valid_user.errors})

        try:
            user = user_service.get(user_id)
        except Exception as e:
            return response_service.service_exception({'error': str(e)})

        return response_service.success(user)
Пример #6
0
 def admin(self, app_init):
     with app_init.app_context():
         user = User(
             email='*****@*****.**',
             password='******',
         )
         user = UserService().create(user, False)
         role = Role(name='admin')
         user.roles.append(role)
         db.session.add(user)
         db.session.commit()
         yield user
Пример #7
0
def signup():
    form = SignupForm()

    if form.validate_on_submit():
        data = form.data
        data.pop('confirm')
        new_user = UserService().create(User(**data))
        login_user(new_user)
        signup_signal.send(new_user)
        return redirect(url_for('main.home'))

    return render_template('signup.html', form=form)