def change_password(request): """ change user account password :param request: :return: """ new_password=request.POST['new_password'] old_password=request.POST['old_password'] username=request.POST['username'] response=dict() user=authenticate(username=username, password=old_password) token_user=request.user if not user: print "auth error" return error_response("Invalid username or old password") else: user.set_password(new_password) user.save() response['success']=True response['message']="success" return package_handle(response)
def create_account(request): """ :param request: POST method json format '{"username": "******", "email":"email_value" , "password": "******""" response=dict() response['success']=False response['message']="" try: username = request.POST['username'] password = request.POST['password'] email= request.POST['email'] if User.objects.filter(username=username).exists(): return error_response("username exists") if User.objects.filter(email=email).exists(): return error_response("email exists") new_user = User.objects.create_user(username=username, email=email, password=password) token=Token.objects.create(user=new_user) new_user_profile = UserProfile(user = new_user) new_user_profile.save() response['success']=True response['message']="success" response['token']=token.key except ValueError: return error_response("Please provide username, password and email") return package_handle(response)
def wrapper(request): return original_function(request) username=u"" token=u"" try: username = request.GET['username'] token = request.GET['token'] except: username = request.POST['username'] token = request.POST['token'] if not (username and token): return error_response("Please provide username and access token for authentication") authorized = verify_token(username=username, token=token) if authorized==1: user=User.objects.get(username=username) request.user=user return original_function(request) elif authorized==-1: return error_response("expired token") elif authorized==0: return error_response("Authentication error")
def account_login(request): """ :param request: GET method :return: """ response=dict() username = request.POST['username'] password = request.POST['password'] user=authenticate(username=username, password=password) response['message']="" response['userid']="" response['success']=False if user is not None: if user.is_active: response['success']=True response['message']="sucess" try: exist_token = Token.objects.get(user=user) except Token.DoesNotExist: return error_response("server error") exist_token.delete() token=Token.objects.create(user=user) token.created = datetime.datetime.utcnow() response['token']=token.key else: # Return a 'disabled account' error message response['message']="disabled account" else: # Return an 'invalid login' error message. response['message']="invalid login" return package_handle(response)
def account_logout(request): """ log user out, reset access token :param request: POST method :return: """ response=dict() response['success']=False user=request.user try: exist_token = Token.objects.get(user=user) except Token.DoesNotExist: return error_response("server error") exist_token.delete() Token.objects.create(user=user) response['success']=True response['message']="success" return package_handle(response)
def process_request(self, request): if request.method == 'GET': return error_response("Please use POST") try: username = request.POST['username'] except: return error_response("Please provide username") try: password = request.POST['password'] print password return None # do nothing, user is trying to login except: pass try: token = request.POST['token'] except: return error_response("Please provide username and access token for authentication") if not (username and token): return error_response("Something is wrong") authorized = verify_token(username=username, token=token) if authorized==1: user=User.objects.get(username=username) request.user=user return None elif authorized==-1: return error_response("expired token") elif authorized==0: return error_response("Authentication error") return None