def update_profile(self, user_id, display_name, phone_number, avatar, clear_phone_number): # update profile for user_id, with force clear phone number flag for clearing stored phone number in db try: profile = self.model.get(user_id) if display_name: profile.display_name = display_name if clear_phone_number: user_authen_setting = self.authen_setting.get(user_id) if user_authen_setting is None: user_authen_setting = AuthenSetting(id=user_id).add() user_authen_setting.enable_mfa = False # change phone_number automatically turn off enable_mfa user_authen_setting.update() profile.phone_number = "" elif phone_number: user_authen_setting = self.authen_setting.get(user_id) if user_authen_setting is None: user_authen_setting = AuthenSetting(id=user_id).add() user_authen_setting.enable_mfa = False # change phone_number automatically turn off enable_mfa user_authen_setting.update() profile.phone_number = phone_number if avatar: profile.avatar = avatar return profile.update() except Exception as e: logger.info(e) raise Exception(Message.UPDATE_PROFILE_FAILED)
def init_mfa_state_disabling(self, user_id): # diable mfa for user_id user_authen_setting = self.authen_setting.get(user_id) if user_authen_setting is None: user_authen_setting = AuthenSetting(id=user_id).add() if user_authen_setting.mfa_enable: user_authen_setting.mfa_enable = False user_authen_setting.update() success = True else: success = False next_step = '' return success, next_step
def init_mfa_state_enabling(self, user_id): # start enable mfa for user_id # if otp in frozen state, raising exception user_authen_setting = self.authen_setting.get(user_id) if user_authen_setting is None: user_authen_setting = AuthenSetting(id=user_id).add() if user_authen_setting.mfa_enable: success = False next_step = '' else: if user_authen_setting.otp_frozen_time > datetime.datetime.now(): raise Exception(Message.FROZEN_STATE_OTP_SERVICE) next_step = 'mfa_validate_password' user_authen_setting.require_action = next_step user_authen_setting.update() success = True return success, next_step