mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-10-27 08:36:51 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Pterodactyl\Rules;
 | |
| 
 | |
| use Illuminate\Contracts\Validation\Rule;
 | |
| 
 | |
| class Username implements Rule
 | |
| {
 | |
|     /**
 | |
|      * Regex to use when validating usernames.
 | |
|      */
 | |
|     public const VALIDATION_REGEX = '/^[a-z0-9]([\w\.-]+)[a-z0-9]$/';
 | |
| 
 | |
|     /**
 | |
|      * Validate that a username contains only the allowed characters and starts/ends
 | |
|      * with alpha-numeric characters.
 | |
|      *
 | |
|      * Allowed characters: a-z0-9_-.
 | |
|      *
 | |
|      * @param string $attribute
 | |
|      * @param mixed $value
 | |
|      * @return bool
 | |
|      */
 | |
|     public function passes($attribute, $value): bool
 | |
|     {
 | |
|         return preg_match(self::VALIDATION_REGEX, mb_strtolower($value));
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Return a validation message for use when this rule fails.
 | |
|      *
 | |
|      * @return string
 | |
|      */
 | |
|     public function message(): string
 | |
|     {
 | |
|         return 'The :attribute must start and end with alpha-numeric characters and
 | |
|                 contain only letters, numbers, dashes, underscores, and periods.';
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Convert the rule to a validation string. This is necessary to avoid
 | |
|      * issues with Eloquence which tries to use this rule as a string.
 | |
|      *
 | |
|      * @return string
 | |
|      */
 | |
|     public function __toString()
 | |
|     {
 | |
|         return 'p_username';
 | |
|     }
 | |
| }
 | 
