Change login policy: accept more characters and don't mind the order.
This commit is contained in:
parent
68f8b141c0
commit
3d44c7c6e8
19
bin/migration-filter.awk
Executable file
19
bin/migration-filter.awk
Executable file
@ -0,0 +1,19 @@
|
||||
#!/usr/bin/gawk -f
|
||||
|
||||
BEGIN {
|
||||
OFS="\t"
|
||||
should_print = 0
|
||||
}
|
||||
|
||||
$1 ~ /^[-_ %ùÙêÊçÇéÉàÀ+a-zA-Z0-9'@.,;&]+$/ {
|
||||
should_print = 1
|
||||
}
|
||||
|
||||
should_print == 0 {
|
||||
print "INVALID:", $1, $2
|
||||
}
|
||||
|
||||
should_print == 1 {
|
||||
print $1 "\t" $2
|
||||
should_print = 0
|
||||
}
|
4
makefile
4
makefile
@ -43,8 +43,8 @@ register:; $(Q)./bin/authc user register $(NAME) $(EMAIL)
|
||||
validate:; $(Q)./bin/authc user validate $(NAME) $(ACTIVATION_KEY)
|
||||
get-user:; $(Q)./bin/authc user get $(NAME) $(LOGIN_OPT)
|
||||
|
||||
USER_DB ?= /tmp/authd-migration-user-db.txt
|
||||
$(USER_DB): ; cat /tmp/usrdb | awk '{ print $$1 "\t" $$2 }' | sort | uniq > $(USER_DB)
|
||||
USER_DB ?= /tmp/migration-authd-user-db.txt
|
||||
$(USER_DB): ; ./bin/migration-filter.awk < /tmp/usrdb | grep -a -v "^INVALID" | sort | uniq > $(USER_DB)
|
||||
migration-file: $(USER_DB)
|
||||
migrate-user:; ./bin/authc user migrate $(NAME) $(PASSWORD_HASH) $(LOGIN_OPT)
|
||||
migrate-all-users:; ./bin/authc migration-script $(USER_DB) $(LOGIN_OPT)
|
||||
|
17
src/configuration.cr
Normal file
17
src/configuration.cr
Normal file
@ -0,0 +1,17 @@
|
||||
require "baguette-crystal-base"
|
||||
|
||||
class Baguette::Configuration
|
||||
class Auth < IPC
|
||||
property service_name : String = "auth"
|
||||
property recreate_indexes : Bool = false
|
||||
property storage : String = "storage"
|
||||
property registrations : Bool = false
|
||||
property require_email : Bool = false
|
||||
property activation_template : String = "email-activation"
|
||||
property recovery_template : String = "email-recovery"
|
||||
property mailer_exe : String = "/usr/local/bin/mailer"
|
||||
property read_only_profile_keys : Array(String) = Array(String).new
|
||||
|
||||
property print_password_recovery_parameters : Bool = false
|
||||
end
|
||||
end
|
@ -17,7 +17,7 @@ class AuthD::Request
|
||||
return Response::ErrorAlreadyUsedLogin.new
|
||||
end
|
||||
|
||||
acceptable_login_regex = "[a-zA-Z][-_ a-zA-Z0-9']*[a-zA-Z0-9]"
|
||||
acceptable_login_regex = "[-_ %ùÙêÊçÇéÉàÀ+a-zA-Z0-9'@.,;&]+"
|
||||
pattern = Regex.new acceptable_login_regex, Regex::Options::IGNORE_CASE
|
||||
return Response::ErrorInvalidLoginFormat.new unless pattern =~ @login
|
||||
|
||||
|
@ -21,14 +21,17 @@ class AuthD::Request
|
||||
result = if regex = @regex
|
||||
pattern = Regex.new regex, Regex::Options::IGNORE_CASE
|
||||
users.each do |u|
|
||||
puts "trying to match user #{u.login}"
|
||||
if pattern =~ u.login || u.profile.try do |profile|
|
||||
full_name = profile["full_name"]?
|
||||
puts "login didn't work, trying to match its full name: #{full_name}"
|
||||
if full_name.nil?
|
||||
false
|
||||
else
|
||||
pattern =~ full_name.as_s
|
||||
end
|
||||
end || u.contact.email.try do |email|
|
||||
puts "full name didn't work, trying to match its email: #{email}"
|
||||
pattern =~ email
|
||||
end
|
||||
Baguette::Log.debug "#{u.login} matches #{pattern}"
|
||||
|
@ -3,21 +3,7 @@ require "sodium"
|
||||
|
||||
extend AuthD
|
||||
|
||||
class Baguette::Configuration
|
||||
class Auth < IPC
|
||||
property service_name : String = "auth"
|
||||
property recreate_indexes : Bool = false
|
||||
property storage : String = "storage"
|
||||
property registrations : Bool = false
|
||||
property require_email : Bool = false
|
||||
property activation_template : String = "email-activation"
|
||||
property recovery_template : String = "email-recovery"
|
||||
property mailer_exe : String = "/usr/local/bin/mailer"
|
||||
property read_only_profile_keys : Array(String) = Array(String).new
|
||||
|
||||
property print_password_recovery_parameters : Bool = false
|
||||
end
|
||||
end
|
||||
require "./configuration"
|
||||
|
||||
# Provides a JWT-based authentication scheme for service-specific users.
|
||||
class AuthD::Service < IPC
|
||||
|
Loading…
Reference in New Issue
Block a user