def handle_perform_verify_email(self, request_data):
        response = {}
        redis_key = "emailveri_{}".format(request_data['userid'])
        success = False
        user = None

        required_params = ["userid", "verifykey"]
        for param in required_params:
            if param not in request_data:
                raise OS_MissingParam(param)

        try:
            user = User.get((User.id == request_data['userid']))
            if self.redis_ctx.exists(redis_key):
                real_verification_key = self.redis_ctx.get(redis_key)
                if request_data['verifykey'] == real_verification_key:
                    success = True
                    user.email_verified = True
                    user.save()
                    self.redis_ctx.delete(redis_key)
        except User.DoesNotExist:
            raise OS_Auth_NoSuchUser()

        response['success'] = success
        return response
Exemple #2
0
 def handle_create_profile(self, data):
     profile_data = data["profile"]
     user_data = None
     if "user" in data:
         user_data = data["user"]
     if "namespaceid" in profile_data:
         namespaceid = profile_data["namespaceid"]
     else:
         namespaceid = 0
     if "uniquenick" in profile_data:
         if not self.is_name_valid(profile_data["uniquenick"]):
             raise OS_Profile_UniquenickInvalid()
         nick_available = self.check_uniquenick_available(
             profile_data["uniquenick"], namespaceid)
         if nick_available["exists"]:
             raise OS_Profile_UniquenickInUse(nick_available["profile"])
     user = User.get((User.id == user_data["id"]))
     if "nick" in profile_data:
         if not self.is_name_valid(profile_data["nick"]):
             raise OS_Profile_NickInvalid()
     profile_data["user"] = user
     profile_pk = Profile.insert(**profile_data).execute()
     profile = Profile.get((Profile.id == profile_pk))
     profile = model_to_dict(profile)
     del profile["user"]
     user = model_to_dict(user)
     return {"user": user, "profile": profile, "success": True}
    def handle_get_user(self, data):
        user = None
        if "user" not in data:
            raise OS_MissingParam("user")
        user_data = data["user"]
        response = {"success": False}
        try:
            if "userid" in user_data:
                user = User.get((User.id == user_data["userid"]))
            elif "email" in user_data:
                user = User.get((User.email == user_data["email"]) &
                                (User.partnercode == user_data["partnercode"]))
            if user:
                user = model_to_dict(user)
                del user['password']
                response["user"] = user
                response["success"] = True
        except User.DoesNotExist:
            return None

        return response
    def handle_update_user(self, data):
        response = {"success": False}
        if "user" not in data:
            data = {'user': data}
        user_model = User.get((User.id == data['user']['id']))

        if "email" in data["user"]:
            if data["user"]["email"] != user_model.email:
                user_model.email_verified = False

        if "email_verified" in data["user"]:
            del data["user"]["email_verified"]

        for key in data['user']:
            if key != "id":
                setattr(user_model, key, data['user'][key])

        user_model.save()
        response["success"] = True
        return response
    def handle_resend_verify_email(self, request_data):
        response = {}
        success = False

        user_id = False
        if "id" in request_data:
            user_id = request_data["id"]
        elif "userid" in request_data:
            user_id = request_data["userid"]
        else:
            raise OS_MissingParam("userid")

        if user_id != False:
            redis_key = "emailveri_{}".format(user_id)

            if not self.redis_ctx.exists(redis_key):
                try:
                    user = User.get((User.id == user_id))
                    self.send_verification_email(model_to_dict(user))
                    success = True
                except User.DoesNotExist:
                    raise OS_Auth_NoSuchUser()
        response['success'] = success
        return response
Exemple #6
0
    def auth_or_create_profile(self, request_body, account_data):
        #{u'profilenick': u'sctest01', u'save_session': True, u'set_context': u'profile', u'hash_type': u'auth_or_create_profile', u'namespaceid': 1,
        #u'uniquenick': u'', u'partnercode': 0, u'password': u'gspy', u'email': u'*****@*****.**'}
        user_where = (User.deleted == False)
        user_data = request_body["user"]
        if "email" in user_data:
            #if User.is_email_valid(user_data["email"]):
            #    raise OS_InvalidParam("email")
            user_where = (user_where) & (User.email == user_data["email"])
        if "partnercode" in user_data:
            user_data['partnercode'] = user_data["partnercode"]
            partnercode = user_data["partnercode"]
        else:
            partnercode = 0

        auth_create_auth_token = False
        if "use_auth_token" in request_body:
            auth_create_auth_token = request_body["use_auth_token"]
        user_where = ((user_where) & (User.partnercode == partnercode))
        try:
            user = User.get(user_where)
            user = model_to_dict(user)

            if ("password" not in user_data or user['password'] !=
                    user_data["password"]) and not auth_create_auth_token:
                raise OS_Auth_InvalidCredentials()
        except User.DoesNotExist:
            register_svc = RegistrationService()
            user = register_svc.try_register_user(user_data)
            user = user["user"]

        profile_data = request_body["profile"]  #create data
        profile_where = (Profile.deleted == False)
        force_unique = False
        if "uniquenick" in profile_data:
            if "namespaceid" in profile_data:
                if profile_data["namespaceid"] > 0:
                    force_unique = True
            else:
                force_unique = True
            profile_where = (profile_where) & (Profile.uniquenick
                                               == profile_data["uniquenick"])

        if "nick" in profile_data:
            profile_where = (profile_where) & (Profile.nick
                                               == profile_data['nick'])

        if "namespaceid" in profile_data:
            namespaceid = profile_data["namespaceid"]
        else:
            namespaceid = 0

        profile_where = (profile_where) & (Profile.namespaceid == namespaceid)

        ret = {}
        try:
            if not force_unique:
                profile_where = (profile_where) & (Profile.userid
                                                   == user["id"])
            profile = Profile.get(profile_where)
            profile = model_to_dict(profile)
            del profile['user']['password']

            ret["new_profile"] = False
            ret["success"] = True

            if user["id"] != profile["user"]["id"]:
                raise OS_InvalidParam("uniquenick")
        except Profile.DoesNotExist:
            user_profile_srv = UserProfileMgrService()
            #this should raise an exception instead of return an error object...
            profile = user_profile_srv.handle_create_profile({
                'profile': profile_data,
                'user': user
            })
            if "error" in profile:
                ret["error"] = profile["error"]
                return ret
            ret["new_profile"] = True
            ret["success"] = True
            profile = profile["profile"]

        ret["profile"] = profile
        ret["user"] = user

        if auth_create_auth_token:
            auth_token_data = self.handle_make_auth_ticket(
                {"profileid": profile["id"]})
            ret["auth_token"] = auth_token_data
        return ret