forgejo/modules/setting
Gusted a9c97110f9 feat: add configurable cooldown to claim usernames (#6422)
Add a new option that allows instances to set a cooldown period to claim
old usernames. In the context of public instances this can be used to
prevent old usernames to be claimed after they are free and allow
graceful migration (by making use of the redirect feature) to a new
username. The granularity of this cooldown is a day. By default this
feature is disabled and thus no cooldown period.

The `CreatedUnix` column is added the `user_redirect` table, for
existing redirects the timestamp is simply zero as we simply do not know
when they were created and are likely already over the cooldown period
if the instance configures one.

Users can always reclaim their 'old' user name again within the cooldown
period. Users can also always reclaim 'old' names of organization they
currently own within the cooldown period.

Creating and renaming users as an admin user are not affected by the
cooldown period for moderation and user support reasons.

To avoid abuse of the cooldown feature, such that a user holds a lot of
usernames, a new option is added `MAX_USER_REDIRECTS` which sets a limit
to the amount of user redirects a user may have, by default this is
disabled. If a cooldown period is set then the default is 5. This
feature operates independently of the cooldown period feature.

Added integration and unit testing.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6422
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-01-24 04:16:56 +00:00
..
config Customizable "Open with" applications for repository clone (#29320) 2024-03-23 11:58:54 +01:00
actions.go fix: actions move to data.forgejo.org 2024-12-19 10:55:05 +01:00
actions_test.go fix: actions move to data.forgejo.org 2024-12-19 10:55:05 +01:00
admin.go fix(services): set SendNotificationEmailOnNewUser 2024-05-25 16:27:44 +02:00
admin_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
api.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
asset_dynamic.go Use a general approach to access custom/static/builtin assets (#24022) 2023-04-12 18:16:45 +08:00
asset_static.go Use a general approach to access custom/static/builtin assets (#24022) 2023-04-12 18:16:45 +08:00
attachment.go feat: Make AVIF Images work with Forgejo 2024-11-13 19:09:40 +01:00
attachment_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
badges.go [GITEA] Add support for shields.io-based badges 2024-02-05 16:09:42 +01:00
cache.go Always enable caches (#28527) 2023-12-19 09:29:05 +00:00
camo.go Use camo.Always instead of camo.Allways (#32097) 2024-09-27 08:45:55 +02:00
config.go Customizable "Open with" applications for repository clone (#29320) 2024-03-23 11:58:54 +01:00
config_env.go Refactor env var related code (#33075) 2025-01-05 13:46:19 +00:00
config_env_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
config_provider.go [gitea] Remove unnecessary parameter (#29092) 2024-02-10 10:53:43 +01:00
config_provider_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
cors.go Fix settings not being loaded at CLI (#26402) 2025-01-05 12:13:48 +00:00
cron.go Replace interface{} with any (#25686) 2023-07-04 18:36:08 +00:00
cron_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
database.go Limit database max connections by default 2024-04-23 00:47:50 +02:00
database_sqlite.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
database_test.go Fix incorrect PostgreSQL connection string for Unix sockets (#28865) 2024-01-20 16:04:47 +00:00
disposable_email_domain_data.go feat: add setting to block disposable emails 2024-11-20 23:17:37 -06:00
f3.go fix(f3): do not run the F3 CLI if F3 is disabled 2024-06-16 13:33:33 +02:00
federation.go [PORT] Remove SHA1 for support for ssh rsa signing (#31857) (#5303) 2025-01-17 03:17:10 +00:00
forgejo_storage_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
git.go git-grep: set timeout to 2s by default and allow configuring it 2024-08-14 07:55:05 +02:00
git_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
highlight.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
i18n.go Add Low German to list of default languages 2024-11-25 18:36:14 +01:00
incoming_email.go Resolve lint for unused parameter and unnecessary type arguments (#30750) 2024-05-05 08:38:16 +01:00
incoming_email_test.go setting: Infer [email.incoming].PORT from .USE_TLS 2024-04-22 16:30:35 +02:00
indexer.go Fix settings not being loaded at CLI (#26402) 2025-01-05 12:13:48 +00:00
indexer_test.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
lfs.go Use 8 as default value for git lfs concurrency (#32421) 2024-12-06 00:17:57 +01:00
lfs_test.go Use 8 as default value for git lfs concurrency (#32421) 2024-12-06 00:17:57 +01:00
log.go log: journald integration (#2869) 2024-08-09 07:49:13 +00:00
log_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
mailer.go Fix settings not being loaded at CLI (#26402) 2025-01-05 12:13:48 +00:00
mailer_test.go setting: Allow aliases for some email settings 2024-04-22 16:09:01 +02:00
markup.go Add setting to restrict count of lines being displayed & only highlight those lines 2024-03-25 16:05:01 +01:00
metrics.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
migrations.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
mime_type_map.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
mirror.go Avoid polluting the config (#25345) 2023-06-18 16:10:44 +00:00
oauth2.go Revert defaulting to EdDSA 2024-11-17 00:42:31 +00:00
oauth2_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
other.go Add [other].SHOW_FOOTER_POWERED_BY setting to hide Powered by (#30253) 2024-04-07 15:40:31 +02:00
packages.go Alt Linux Apt-Rpm repository support for Forgejo packages. (#6351) 2025-01-22 14:01:49 +00:00
packages_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
path.go [BRANDING] alias {FORGEJO,GITEA}_{CUSTOM,WORK_DIR} 2024-02-05 16:05:01 +01:00
path_test.go [BRANDING] alias {FORGEJO,GITEA}_{CUSTOM,WORK_DIR} 2024-02-05 16:05:01 +01:00
picture.go Fix all possible setting error related storages and added some tests (#23911) 2023-06-14 11:42:38 +08:00
project.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
proxy.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
queue.go Increase queue length (#27555) 2023-10-10 18:47:49 +08:00
quota.go feat: Trivial default quota configuration 2024-08-26 13:25:34 +02:00
repository.go feat: allow changing default branch update style 2024-12-23 18:55:25 +03:00
repository_archive.go Fix all possible setting error related storages and added some tests (#23911) 2023-06-14 11:42:38 +08:00
repository_archive_test.go Add testifylint to lint checks (#4535) 2024-07-30 19:41:10 +00:00
security.go [SEC] Add keying module 2024-08-21 16:06:17 +02:00
server.go Add slogan config (#3752) 2024-06-07 17:12:48 +00:00
server_test.go feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
service.go feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
service_test.go feat: add setting to block disposable emails 2024-11-20 23:17:37 -06:00
session.go Fix settings not being loaded at CLI (#26402) 2025-01-05 12:13:48 +00:00
setting.go log: journald integration (#2869) 2024-08-09 07:49:13 +00:00
setting_test.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
ssh.go Expanded minimum RSA Keylength to 3072 (#26604) 2023-08-28 00:53:16 +00:00
storage.go Enable unparam linter (#31277) 2024-06-16 13:42:58 +02:00
storage_test.go test: fix test linting 2024-11-11 12:44:36 +01:00
task.go handle deprecated settings (#22992) 2023-02-20 16:18:26 -06:00
time.go Fix settings not being loaded at CLI (#26402) 2025-01-05 12:13:48 +00:00
ui.go fix: Specify default value for EXPLORE_DEFAULT_SORT. 2024-10-21 00:11:47 +02:00
webhook.go [REFACTOR] simplify checkHookType 2024-03-27 22:26:55 +01:00