def UserLogin(request): if request.method == "POST": from main.models import User # Find if User already exists newUser = User() oldUser = User.objects.filter(facebook_id=request.POST["id"]) if len(oldUser) > 0: newUser.id = oldUser[0].id newUser.token = oldUser[0].token else: import string, random chars = string.ascii_uppercase + string.digits + string.ascii_lowercase newUser.token = "".join(random.choice(chars) for x in range(40)) # Update user data if "name" in request.POST: newUser.name = request.POST["name"] if "first_name" in request.POST: newUser.first_name = request.POST["first_name"] if "last_name" in request.POST: newUser.last_name = request.POST["last_name"] if "username" in request.POST: newUser.username = request.POST["username"] if "email" in request.POST: newUser.email = request.POST["email"] if "gender" in request.POST: newUser.gender = request.POST["gender"] # if 'birthday' in request.POST: # user.birthday = request.POST['birthday'] newUser.avatar = "http://graph.facebook.com/" + request.POST["id"] + "/picture" newUser.facebook_id = request.POST["id"] newUser.save() context = {"token": newUser.token} else: context = {"token": "Forbidden"} return render_to_response("login.html", context, context_instance=RequestContext(request))
def create(self, validated_data): # user = super().create(**validated_data) user = User(username=validated_data["username"], password=validated_data["password"]) # 调用django的认证系统加密密码 user.set_password(validated_data['password']) user.last_login = datetime.now() user.email = validated_data["email"] if "email" in validated_data.keys( ) else "*****@*****.**" user.save() # 补充生成记录登录状态的token jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER payload = jwt_payload_handler(user) token = jwt_encode_handler(payload) user.token = token # 增加用户的身份 if validated_data["identity"] or validated_data["identity"] != '': identity = validated_data["identity"] passwd = validated_data['password'] truename = validated_data['truename'] UserProfile.objects.get_or_create(identity=identity, user=user, passwd=passwd, truename=truename) #user.truename = truename #user.identity = identity return user
def UserLogin(request): if request.method == 'POST': from main.models import User # Find if User already exists newUser = User() oldUser = User.objects.filter(facebook_id=request.POST['id']) if len(oldUser) > 0: newUser.id = oldUser[0].id newUser.token = oldUser[0].token else: import string, random chars = string.ascii_uppercase + string.digits + string.ascii_lowercase newUser.token = ''.join(random.choice(chars) for x in range(40)) # Update user data if 'name' in request.POST: newUser.name = request.POST['name'] if 'first_name' in request.POST: newUser.first_name = request.POST['first_name'] if 'last_name' in request.POST: newUser.last_name = request.POST['last_name'] if 'username' in request.POST: newUser.username = request.POST['username'] if 'email' in request.POST: newUser.email = request.POST['email'] if 'gender' in request.POST: newUser.gender = request.POST['gender'] #if 'birthday' in request.POST: # user.birthday = request.POST['birthday'] newUser.avatar = 'http://graph.facebook.com/' + request.POST['id'] + '/picture' newUser.facebook_id = request.POST['id'] newUser.save() context = { 'token': newUser.token } else: context = { 'token': 'Forbidden' } return render_to_response('login.html', context, context_instance=RequestContext(request))
def post(self, request): serialized = UserSerializer(data=request.data) if serialized.is_valid(): user = User() user.username = serialized.data['username'] user.set_password(serialized.data['password']) user.token = uuid4() user.save() profile = user.profile profile.subscribe = SubscribeDetail.create_subscribe(profile.id, duration=14) serializer = ProfileSerializer(profile) return Response({**serializer.data, 'token': user.token}, status=status.HTTP_201_CREATED) else: return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
def lco_authenticate(request, username, password): token = api_auth(settings.PORTAL_TOKEN_URL, username, password) profile, msg = get_profile(token) if msg: messages.info(request, msg) if token and profile: username = profile[0] try: user = User.objects.get(username=username) except User.DoesNotExist: # Create a new user. There's no need to set a password # because Valhalla auth will always be used. user = User(username=username) user.token = token user.email = profile[3] user.save() # Give the new user a Django Rest Framework token Token.objects.get_or_create(user=user) # Finally add these tokens as session variables request.session['token'] = token return user return None
def lco_authenticate(request, username, password): token = api_auth(settings.PORTAL_TOKEN_URL, username, password) profile, msg = get_profile(token) if msg: messages.info(request, msg) archivetoken = api_auth(settings.ARCHIVE_TOKEN_URL, username, password) if token and profile and archivetoken: username = profile[0] try: user = User.objects.get(username=username) except User.DoesNotExist: # Create a new user. There's no need to set a password # because Valhalla auth will always be used. user = User(username=username) user.token = token user.archive_token = archivetoken user.default_proposal = profile[2] user.save() # Finally add these tokens as session variables request.session['token'] = token request.session['archive_token'] = archivetoken return user return None