| 
									
										
										
										
											2017-06-09 19:46:01 +02:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class UnreservedUsernameValidator < ActiveModel::Validator | 
					
						
							|  |  |  |   def validate(account) | 
					
						
							|  |  |  |     return if account.username.nil? | 
					
						
							|  |  |  |     account.errors.add(:username, I18n.t('accounts.reserved_username')) if reserved_username?(account.username) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-02 10:18:55 +01:00
										 |  |  |   def pam_controlled?(value) | 
					
						
							|  |  |  |     return false unless Devise.pam_authentication && Devise.pam_controlled_service | 
					
						
							|  |  |  |     Rpam2.account(Devise.pam_controlled_service, value).present? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-09 19:46:01 +02:00
										 |  |  |   def reserved_username?(value) | 
					
						
							| 
									
										
										
										
											2018-02-02 10:18:55 +01:00
										 |  |  |     return true if pam_controlled?(value) | 
					
						
							| 
									
										
										
										
											2017-06-09 19:46:01 +02:00
										 |  |  |     return false unless Setting.reserved_usernames | 
					
						
							|  |  |  |     Setting.reserved_usernames.include?(value.downcase) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |