def user_signup(request): ''' This is for user signup without Email varification. User will be able to signup using email and password. Signup will automatically create corresponding user profile and balance. Calling http://127.0.0.1:8000/user/user_signup/ will cause to invoke this Api. Response Type : Post Required filed: email, password Successful Post response: { "success": true, "message": "A verification link has been sent to your email" } unsuccessful Post Response: { "success": false, "message": "Some internal problem occurs" } ''' if request.method == 'POST': try: serializer_class = RegisterSerializer user = request.data serializer = serializer_class(data=user) serializer.is_valid(raise_exception=True) serializer.save() user_data = serializer.data user = User.objects.get(email=user_data['email']) if not user.is_verified: user.is_verified = True user.save() balance_values = {'user_id': user.id} create_user_balance(balance_values) profile_values = {'user_id': user.id, 'email': user.email} create_user_profile(profile_values) return Response( { 'success': True, 'message': 'A verification link has been sent to your email' }, status=status.HTTP_201_CREATED) except: return Response({ 'success': False, 'message': 'Some internal problem occurs' })
def get(self, request): token = request.GET.get('token') try: payload = jwt.decode(token, settings.SECRET_KEY) user = User.objects.get(id=payload['user_id']) if not user.is_verified: user.is_verified = True user.save() balance_values = {'user_id': payload['user_id']} create_user_balance(balance_values) profile_values = { 'user_id': payload['user_id'], 'email': user.email } create_user_profile(profile_values) return Response({'email': 'Successfully activated'}, status=status.HTTP_200_OK) except jwt.ExpiredSignatureError as identifier: return Response({'error': 'Activation Expired'}, status=status.HTTP_400_BAD_REQUEST) except jwt.exceptions.DecodeError as identifier: return Response({'error': 'Invalid token'}, status=status.HTTP_400_BAD_REQUEST)
def create_user(request): email = request.data.get('email') password = request.data.get('password') role = request.data.get('role') pwd = make_password(password) username = request.data.get('username') phone_number = request.data.get('phone_number') if username is None: username = "" if phone_number is None: phone_number = "" #Create an user if role == "Admin" or "Staff": new_user = User.objects.create(email=email, password=pwd, pwd=password, role=role, is_staff=True, is_verified=True, is_active=True, username=username, phone_number=phone_number) new_user.save() user_id = new_user.id email = new_user.email print(new_user) data = { 'email': email, 'password': pwd, 'pwd': password, 'role': role, 'is_staff': True, 'is_verified': True, 'is_active': True, 'username': username, 'phone_number': phone_number } new_serializer = UserSerializerz(new_user, data=data) if new_serializer.is_valid(): new_serializer.save() balance_values = {'user_id': user_id} create_user_balance(balance_values) profile_values = {'user_id': user_id, 'email': email} create_user_profile(profile_values) data = new_serializer.data # try: # current_user = User.objects.get(id=user_id) # except: # current_user = None # if current_user: # new_serializer = UserSerializerz(new_user,many=False) # data = new_serializer.data # else: # data = {} return Response({ 'success': True, 'message': 'User has been created', 'data': data, # 'encrypted_password': data["password"], 'password': password }) else: print(new_serializer.errors) return Response({ 'success': False, 'message': 'Could not create user', }) elif role == "Seller": new_user = User.objects.create(email=email, pwd=password, password=pwd, role=role, is_suplier=True, is_staff=True, is_verified=True, is_active=True, username=username, phone_number=phone_number) new_user.save() user_id = new_user.id email = new_user.email data = { 'email': email, 'password': pwd, 'pwd': password, 'role': role, 'is_staff': True, 'is_verified': True, 'is_active': True, 'is_suplier': True, 'username': username, 'phone_number': phone_number } new_serializer = UserSerializerz(new_user, data=data) if new_serializer.is_valid(): new_serializer.save() balance_values = {'user_id': user_id} create_user_balance(balance_values) profile_values = {'user_id': user_id, 'email': email} create_user_profile(profile_values) data = new_serializer.data # try: # current_user = User.objects.get(id=user_id) # except: # current_user = None # if current_user: # new_serializer = UserSerializerz(new_user,many=False) # data = new_serializer.data # else: # data = {} return Response({ 'success': True, 'message': 'User has been created', 'data': data, 'password': password }) else: print(new_serializer.errors) return Response({ 'success': False, 'message': 'Could not create user', }) else: return Response({ 'success': False, 'message': 'Insert the correct role' })