def create_token(user, title, expiration=_default_expiration_duration_opt): """ Creates and returns an app specific token for the given user. If no expiration is specified (including `None`), then the default from config is used. """ if expiration == _default_expiration_duration_opt: duration = _default_expiration_duration() expiration = duration + datetime.now() if duration else None token_code = random_string_generator(TOKEN_NAME_PREFIX_LENGTH + MINIMUM_TOKEN_SUFFIX_LENGTH)() token_name = token_code[:TOKEN_NAME_PREFIX_LENGTH] token_secret = token_code[TOKEN_NAME_PREFIX_LENGTH:] assert token_name assert token_secret # TODO(remove-unenc): Remove legacy handling. old_token_code = (token_code if ActiveDataMigration.has_flag( ERTMigrationFlags.WRITE_OLD_FIELDS) else None) return AppSpecificAuthToken.create( user=user, title=title, expiration=expiration, token_name=token_name, token_secret=DecryptedValue(token_secret), token_code=old_token_code, )
def create_token(user, title, expiration=_default_expiration_duration_opt): """ Creates and returns an app specific token for the given user. If no expiration is specified (including `None`), then the default from config is used. """ if expiration == _default_expiration_duration_opt: duration = _default_expiration_duration() expiration = duration + datetime.now() if duration else None token_code = random_string_generator(TOKEN_NAME_PREFIX_LENGTH + MINIMUM_TOKEN_SUFFIX_LENGTH)() token_name = token_code[:TOKEN_NAME_PREFIX_LENGTH] token_secret = token_code[TOKEN_NAME_PREFIX_LENGTH:] assert token_name assert token_secret return AppSpecificAuthToken.create( user=user, title=title, expiration=expiration, token_name=token_name, token_secret=DecryptedValue(token_secret), )