imap: consistently index users by IMAP-supplied username
The IMAP-supplied username may be different from the canonical ProtonMail username. References: https://github.com/emersion/hydroxide/issues/83
This commit is contained in:
parent
cbcde22b5b
commit
5cd1c7a921
28
imap/user.go
28
imap/user.go
|
@ -39,6 +39,7 @@ var systemFlags = []struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type user struct {
|
type user struct {
|
||||||
|
username string
|
||||||
backend *backend
|
backend *backend
|
||||||
c *protonmail.Client
|
c *protonmail.Client
|
||||||
u *protonmail.User
|
u *protonmail.User
|
||||||
|
@ -65,17 +66,7 @@ func getUser(be *backend, username string, c *protonmail.Client, privateKeys ope
|
||||||
u.Unlock()
|
u.Unlock()
|
||||||
return u, nil
|
return u, nil
|
||||||
} else {
|
} else {
|
||||||
pu, err := c.GetCurrentUser()
|
u, err := newUser(be, username, c, privateKeys)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
addrs, err := c.ListAddresses()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
u, err := newUser(be, c, pu, privateKeys, addrs)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -85,8 +76,19 @@ func getUser(be *backend, username string, c *protonmail.Client, privateKeys ope
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newUser(be *backend, c *protonmail.Client, u *protonmail.User, privateKeys openpgp.EntityList, addrs []*protonmail.Address) (*user, error) {
|
func newUser(be *backend, username string, c *protonmail.Client, privateKeys openpgp.EntityList) (*user, error) {
|
||||||
|
u, err := c.GetCurrentUser()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
addrs, err := c.ListAddresses()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
uu := &user{
|
uu := &user{
|
||||||
|
username: username,
|
||||||
backend: be,
|
backend: be,
|
||||||
c: c,
|
c: c,
|
||||||
u: u,
|
u: u,
|
||||||
|
@ -277,7 +279,7 @@ func (u *user) Logout() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(u.backend.users, u.u.Name)
|
delete(u.backend.users, u.username)
|
||||||
|
|
||||||
close(u.done)
|
close(u.done)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue