mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	* Add username check to doctor - Add a new breaking change detector to Gitea's doctor, which checks if all users still have a valid username according to Gitea. Given from time-to-time we need to make changes, either due to new routes or due to security, it's for a instance's admin to check if all users still have a valid username. * Fix extra argument * Apply suggestions from code review * Apply suggestions from code review
This commit is contained in:
		@@ -58,6 +58,29 @@ func checkUserEmail(ctx context.Context, logger log.Logger, _ bool) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// From time to time Gitea makes changes to the reserved usernames and which symbols
 | 
			
		||||
// are allowed for various reasons. This check helps with detecting users that, according
 | 
			
		||||
// to our reserved names, don't have a valid username.
 | 
			
		||||
func checkUserName(ctx context.Context, logger log.Logger, _ bool) error {
 | 
			
		||||
	var invalidUserCount int64
 | 
			
		||||
	if err := iterateUserAccounts(ctx, func(u *user.User) error {
 | 
			
		||||
		if err := user.IsUsableUsername(u.Name); err != nil {
 | 
			
		||||
			invalidUserCount++
 | 
			
		||||
			logger.Warn("User[id=%d] does not have a valid username: %v", u.ID, err)
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
	}); err != nil {
 | 
			
		||||
		return fmt.Errorf("iterateUserAccounts: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if invalidUserCount == 0 {
 | 
			
		||||
		logger.Info("All users have a valid username.")
 | 
			
		||||
	} else {
 | 
			
		||||
		logger.Warn("%d user(s) have a non-valid username.", invalidUserCount)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	Register(&Check{
 | 
			
		||||
		Title:     "Check if users has an valid email address",
 | 
			
		||||
@@ -66,4 +89,11 @@ func init() {
 | 
			
		||||
		Run:       checkUserEmail,
 | 
			
		||||
		Priority:  9,
 | 
			
		||||
	})
 | 
			
		||||
	Register(&Check{
 | 
			
		||||
		Title:     "Check if users have a valid username",
 | 
			
		||||
		Name:      "check-user-names",
 | 
			
		||||
		IsDefault: false,
 | 
			
		||||
		Run:       checkUserName,
 | 
			
		||||
		Priority:  9,
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user