mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-11 06:29:29 +01:00
commit
effad1453c
@ -891,19 +891,34 @@ func (am *AccountManager) Verify(client *Client, account string, code string) er
|
|||||||
}
|
}
|
||||||
if client != nil {
|
if client != nil {
|
||||||
am.Login(client, clientAccount)
|
am.Login(client, clientAccount)
|
||||||
|
if client.AlwaysOn() {
|
||||||
|
client.markDirty(IncludeRealname)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
// we may need to do nick enforcement here:
|
||||||
_, method := am.EnforcementStatus(casefoldedAccount, skeleton)
|
_, method := am.EnforcementStatus(casefoldedAccount, skeleton)
|
||||||
if method != NickEnforcementNone {
|
|
||||||
currentClient := am.server.clients.Get(casefoldedAccount)
|
|
||||||
if currentClient == nil || currentClient == client || currentClient.Account() == casefoldedAccount {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if method == NickEnforcementStrict {
|
if method == NickEnforcementStrict {
|
||||||
|
currentClient := am.server.clients.Get(casefoldedAccount)
|
||||||
|
if currentClient != nil && currentClient != client && currentClient.Account() != casefoldedAccount {
|
||||||
am.server.RandomlyRename(currentClient)
|
am.server.RandomlyRename(currentClient)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if client.AlwaysOn() {
|
// #1216: we may have created an always-on client
|
||||||
client.markDirty(IncludeRealname)
|
if client == nil {
|
||||||
|
config := am.server.Config()
|
||||||
|
if persistenceEnabled(config.Accounts.Multiclient.AlwaysOn, PersistentUnspecified) {
|
||||||
|
accountData, err := am.LoadAccount(account)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
am.server.AddAlwaysOnClient(
|
||||||
|
accountData,
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
config.Accounts.defaultUserModes,
|
||||||
|
"",
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user