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)
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)
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)
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)
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)
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
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)