|
@@ -744,6 +744,7 @@ func (am *AccountManager) dispatchMailtoCallback(client *Client, account string,
|
744
|
744
|
|
745
|
745
|
func (am *AccountManager) Verify(client *Client, account string, code string) error {
|
746
|
746
|
casefoldedAccount, err := CasefoldName(account)
|
|
747
|
+ var skeleton string
|
747
|
748
|
if err != nil || account == "" || account == "*" {
|
748
|
749
|
return errAccountVerificationFailed
|
749
|
750
|
}
|
|
@@ -814,7 +815,7 @@ func (am *AccountManager) Verify(client *Client, account string, code string) er
|
814
|
815
|
})
|
815
|
816
|
|
816
|
817
|
if err == nil {
|
817
|
|
- skeleton, _ := Skeleton(raw.Name)
|
|
818
|
+ skeleton, _ = Skeleton(raw.Name)
|
818
|
819
|
am.Lock()
|
819
|
820
|
am.nickToAccount[casefoldedAccount] = casefoldedAccount
|
820
|
821
|
am.skeletonToAccount[skeleton] = casefoldedAccount
|
|
@@ -839,6 +840,18 @@ func (am *AccountManager) Verify(client *Client, account string, code string) er
|
839
|
840
|
if client != nil {
|
840
|
841
|
am.Login(client, clientAccount)
|
841
|
842
|
}
|
|
843
|
+ _, method := am.EnforcementStatus(casefoldedAccount, skeleton)
|
|
844
|
+ if method != NickEnforcementNone {
|
|
845
|
+ currentClient := am.server.clients.Get(casefoldedAccount)
|
|
846
|
+ if currentClient == nil || currentClient == client || currentClient.Account() == casefoldedAccount {
|
|
847
|
+ return nil
|
|
848
|
+ }
|
|
849
|
+ if method == NickEnforcementStrict {
|
|
850
|
+ am.server.RandomlyRename(currentClient)
|
|
851
|
+ } else if method == NickEnforcementWithTimeout {
|
|
852
|
+ currentClient.nickTimer.Touch(nil)
|
|
853
|
+ }
|
|
854
|
+ }
|
842
|
855
|
return nil
|
843
|
856
|
}
|
844
|
857
|
|