@@ -16,6 +16,9 @@ class Net::IMAP::SASL::PlainAuthenticator
16
16
17
17
# Authentication identity: the identity that matches the #password.
18
18
#
19
+ # RFC-2831[https://tools.ietf.org/html/rfc2831] uses the term +username+.
20
+ # "Authentication identity" is the generic term used by
21
+ # RFC-4422[https://tools.ietf.org/html/rfc4422].
19
22
# RFC-4616[https://tools.ietf.org/html/rfc4616] and many later RFCs abbreviate
20
23
# this to +authcid+.
21
24
attr_reader :username
@@ -53,14 +56,16 @@ class Net::IMAP::SASL::PlainAuthenticator
53
56
# See attribute documentation for more details.
54
57
def initialize ( user = nil , pass = nil ,
55
58
username : nil , password : nil , authzid : nil , **)
56
- username ||= user or raise ArgumentError , "missing username"
57
- password ||= pass or raise ArgumentError , "missing password"
58
- raise ArgumentError , "username contains NULL" if username . include? ( NULL )
59
- raise ArgumentError , "password contains NULL" if password . include? ( NULL )
60
- raise ArgumentError , "authzid contains NULL" if authzid &.include? ( NULL )
61
- @username = username
62
- @password = password
59
+ @username = username || user or raise ArgumentError , "missing username"
60
+ @password = password || pass or raise ArgumentError , "missing password"
63
61
@authzid = authzid
62
+ [ username , user ] . compact . count == 1 or
63
+ raise ArgumentError , "conflicting values for username"
64
+ [ password , pass ] . compact . count == 1 or
65
+ raise ArgumentError , "conflicting values for password"
66
+ raise ArgumentError , "username contains NULL" if @username . include? ( NULL )
67
+ raise ArgumentError , "password contains NULL" if @password . include? ( NULL )
68
+ raise ArgumentError , "authzid contains NULL" if @authzid &.include? ( NULL )
64
69
end
65
70
66
71
# :call-seq:
0 commit comments