|
@@ -750,6 +750,7 @@ func (am *AccountManager) dispatchMailtoCallback(client *Client, casefoldedAccou
|
750
|
750
|
|
751
|
751
|
func (am *AccountManager) Verify(client *Client, account string, code string) error {
|
752
|
752
|
casefoldedAccount, err := CasefoldName(account)
|
|
753
|
+ var skeleton string
|
753
|
754
|
if err != nil || account == "" || account == "*" {
|
754
|
755
|
return errAccountVerificationFailed
|
755
|
756
|
}
|
|
@@ -820,7 +821,7 @@ func (am *AccountManager) Verify(client *Client, account string, code string) er
|
820
|
821
|
})
|
821
|
822
|
|
822
|
823
|
if err == nil {
|
823
|
|
- skeleton, _ := Skeleton(raw.Name)
|
|
824
|
+ skeleton, _ = Skeleton(raw.Name)
|
824
|
825
|
am.Lock()
|
825
|
826
|
am.nickToAccount[casefoldedAccount] = casefoldedAccount
|
826
|
827
|
am.skeletonToAccount[skeleton] = casefoldedAccount
|
|
@@ -845,6 +846,18 @@ func (am *AccountManager) Verify(client *Client, account string, code string) er
|
845
|
846
|
if client != nil {
|
846
|
847
|
am.Login(client, clientAccount)
|
847
|
848
|
}
|
|
849
|
+ _, method := am.EnforcementStatus(casefoldedAccount, skeleton)
|
|
850
|
+ if method != NickEnforcementNone {
|
|
851
|
+ currentClient := am.server.clients.Get(casefoldedAccount)
|
|
852
|
+ if currentClient == nil || currentClient == client || currentClient.Account() == casefoldedAccount {
|
|
853
|
+ return nil
|
|
854
|
+ }
|
|
855
|
+ if method == NickEnforcementStrict {
|
|
856
|
+ am.server.RandomlyRename(currentClient)
|
|
857
|
+ } else if method == NickEnforcementWithTimeout {
|
|
858
|
+ currentClient.nickTimer.Touch(nil)
|
|
859
|
+ }
|
|
860
|
+ }
|
848
|
861
|
return nil
|
849
|
862
|
}
|
850
|
863
|
|