Documentation ¶
Overview ¶
Package users is a generated GoMock package.
Package users provides core business logic providing API over credentials store and PM API.
Index ¶
- Variables
- type ClientManager
- type Configer
- type CredentialsStorer
- type MockListener
- func (m *MockListener) Add(eventName string, channel chan<- string)
- func (m *MockListener) EXPECT() *MockListenerMockRecorder
- func (m *MockListener) Emit(eventName, data string)
- func (m *MockListener) Remove(eventName string, channel chan<- string)
- func (m *MockListener) RetryEmit(eventName string)
- func (m *MockListener) SetBuffer(eventName string)
- func (m *MockListener) SetLimit(eventName string, limit time.Duration)
- type MockListenerMockRecorder
- func (mr *MockListenerMockRecorder) Add(eventName, channel interface{}) *gomock.Call
- func (mr *MockListenerMockRecorder) Emit(eventName, data interface{}) *gomock.Call
- func (mr *MockListenerMockRecorder) Remove(eventName, channel interface{}) *gomock.Call
- func (mr *MockListenerMockRecorder) RetryEmit(eventName interface{}) *gomock.Call
- func (mr *MockListenerMockRecorder) SetBuffer(eventName interface{}) *gomock.Call
- func (mr *MockListenerMockRecorder) SetLimit(eventName, limit interface{}) *gomock.Call
- type PanicHandler
- type StoreMaker
- type User
- func (u *User) CheckBridgeLogin(password string) error
- func (u *User) CloseAllConnections()
- func (u *User) CloseConnection(address string)
- func (u *User) GetAddressID(address string) (id string, err error)
- func (u *User) GetAddresses() []string
- func (u *User) GetBridgePassword() string
- func (u *User) GetPrimaryAddress() string
- func (u *User) GetStore() *store.Store
- func (u *User) GetStoreAddresses() []string
- func (u *User) GetTemporaryPMAPIClient() pmapi.Client
- func (u *User) ID() string
- func (u *User) IsAuthorized() bool
- func (u *User) IsCombinedAddressMode() bool
- func (u *User) IsConnected() bool
- func (u *User) Logout() (err error)
- func (u *User) SwitchAddressMode() (err error)
- func (u *User) UpdateUser() error
- func (u *User) Username() string
- type Users
- func (u *Users) AllowProxy()
- func (u *Users) CheckConnection() error
- func (u *Users) ClearData() error
- func (u *Users) DeleteUser(userID string, clearStore bool) error
- func (u *Users) DisallowProxy()
- func (u *Users) FinishLogin(authClient pmapi.Client, auth *pmapi.Auth, mbPassphrase string) (user *User, err error)
- func (u *Users) GetUser(query string) (*User, error)
- func (u *Users) GetUsers() []*User
- func (u *Users) Login(username, password string) (authClient pmapi.Client, auth *pmapi.Auth, err error)
- func (u *Users) SendMetric(m metrics.Metric)
- func (u *Users) StopWatchers()
Constants ¶
This section is empty.
Variables ¶
var ErrLoggedOutUser = errors.New("account is logged out, use the app to login again")
ErrLoggedOutUser is sent to IMAP and SMTP if user exists, password is OK but user is logged out from the app.
Functions ¶
This section is empty.
Types ¶
type ClientManager ¶
type Configer ¶
type Configer interface { ClearData() error GetVersion() string GetAPIConfig() *pmapi.ClientConfig }
type CredentialsStorer ¶
type CredentialsStorer interface { List() (userIDs []string, err error) Add(userID, userName, apiToken, mailboxPassword string, emails []string) (*credentials.Credentials, error) Get(userID string) (*credentials.Credentials, error) SwitchAddressMode(userID string) error UpdateEmails(userID string, emails []string) error UpdatePassword(userID, password string) error UpdateToken(userID, apiToken string) error Logout(userID string) error Delete(userID string) error }
type MockListener ¶
type MockListener struct {
// contains filtered or unexported fields
}
MockListener is a mock of Listener interface
func NewMockListener ¶
func NewMockListener(ctrl *gomock.Controller) *MockListener
NewMockListener creates a new mock instance
func (*MockListener) Add ¶
func (m *MockListener) Add(eventName string, channel chan<- string)
Add mocks base method
func (*MockListener) EXPECT ¶
func (m *MockListener) EXPECT() *MockListenerMockRecorder
EXPECT returns an object that allows the caller to indicate expected use
func (*MockListener) Emit ¶
func (m *MockListener) Emit(eventName, data string)
Emit mocks base method
func (*MockListener) Remove ¶
func (m *MockListener) Remove(eventName string, channel chan<- string)
Remove mocks base method
func (*MockListener) RetryEmit ¶
func (m *MockListener) RetryEmit(eventName string)
RetryEmit mocks base method
func (*MockListener) SetBuffer ¶
func (m *MockListener) SetBuffer(eventName string)
SetBuffer mocks base method
type MockListenerMockRecorder ¶
type MockListenerMockRecorder struct {
// contains filtered or unexported fields
}
MockListenerMockRecorder is the mock recorder for MockListener
func (*MockListenerMockRecorder) Add ¶
func (mr *MockListenerMockRecorder) Add(eventName, channel interface{}) *gomock.Call
Add indicates an expected call of Add
func (*MockListenerMockRecorder) Emit ¶
func (mr *MockListenerMockRecorder) Emit(eventName, data interface{}) *gomock.Call
Emit indicates an expected call of Emit
func (*MockListenerMockRecorder) Remove ¶
func (mr *MockListenerMockRecorder) Remove(eventName, channel interface{}) *gomock.Call
Remove indicates an expected call of Remove
func (*MockListenerMockRecorder) RetryEmit ¶
func (mr *MockListenerMockRecorder) RetryEmit(eventName interface{}) *gomock.Call
RetryEmit indicates an expected call of RetryEmit
func (*MockListenerMockRecorder) SetBuffer ¶
func (mr *MockListenerMockRecorder) SetBuffer(eventName interface{}) *gomock.Call
SetBuffer indicates an expected call of SetBuffer
func (*MockListenerMockRecorder) SetLimit ¶
func (mr *MockListenerMockRecorder) SetLimit(eventName, limit interface{}) *gomock.Call
SetLimit indicates an expected call of SetLimit
type PanicHandler ¶
type PanicHandler interface {
HandlePanic()
}
type StoreMaker ¶
type User ¶
type User struct {
// contains filtered or unexported fields
}
User is a struct on top of API client and credentials store.
func (*User) CheckBridgeLogin ¶
CheckBridgeLogin checks whether the user is logged in and the bridge IMAP/SMTP password is correct.
func (*User) CloseAllConnections ¶
func (u *User) CloseAllConnections()
CloseAllConnections calls CloseConnection for all users addresses.
func (*User) CloseConnection ¶
CloseConnection emits closeConnection event on `address` which should close all active connection.
func (*User) GetAddressID ¶
GetAddressID returns the API ID of the given address.
func (*User) GetAddresses ¶
GetAddresses returns list of all addresses.
func (*User) GetBridgePassword ¶
GetBridgePassword returns bridge password. This is not a password of the PM account, but generated password for local purposes to not use a PM account in the clients (such as Thunderbird).
func (*User) GetPrimaryAddress ¶
GetPrimaryAddress returns the user's original address (which is not necessarily the same as the primary address, because a primary address might be an alias and be in position one).
func (*User) GetStoreAddresses ¶
GetStoreAddresses returns all addresses used by the store (so in combined mode, that's just the original address, but in split mode, that's all active addresses).
func (*User) GetTemporaryPMAPIClient ¶
GetTemporaryPMAPIClient returns an authorised PMAPI client. Do not use! It's only for backward compatibility of old SMTP and IMAP implementations. After proper refactor of SMTP and IMAP remove this method.
func (*User) IsAuthorized ¶
IsAuthorized returns whether the user has received an Auth from the API yet.
func (*User) IsCombinedAddressMode ¶
IsCombinedAddressMode returns whether user is set in combined or split mode. Combined mode is the default mode and is what users typically need. Split mode is mostly for outlook as it cannot handle sending e-mails from an address other than the primary one.
func (*User) IsConnected ¶
IsConnected returns whether user is logged in.
func (*User) Logout ¶
Logout logs out the user from pmapi, the credentials store, the mail store, and tries to remove as much sensitive data as possible.
func (*User) SwitchAddressMode ¶
SwitchAddressMode changes mode from combined to split and vice versa. The mode to switch to is determined by the state of the user's credentials in the credentials store. See `IsCombinedAddressMode` for more details.
func (*User) UpdateUser ¶
UpdateUser updates user details from API and saves to the credentials.
type Users ¶
type Users struct {
// contains filtered or unexported fields
}
Users is a struct handling users.
func New ¶
func New( config Configer, panicHandler PanicHandler, eventListener listener.Listener, clientManager ClientManager, credStorer CredentialsStorer, storeFactory StoreMaker, useOnlyActiveAddresses bool, ) *Users
func (*Users) AllowProxy ¶
func (u *Users) AllowProxy()
AllowProxy instructs the app to use DoH to access an API proxy if necessary. It also needs to work before the app is initialised (because we may need to use the proxy at startup).
func (*Users) CheckConnection ¶
CheckConnection returns whether there is an internet connection. This should use the connection manager when it is eventually implemented.
func (*Users) ClearData ¶
ClearData closes all connections (to release db files and so on) and clears all data.
func (*Users) DeleteUser ¶
DeleteUser deletes user completely; it logs user out from the API, stops any active connection, deletes from credentials store and removes from the Bridge struct.
func (*Users) DisallowProxy ¶
func (u *Users) DisallowProxy()
DisallowProxy instructs the app to not use DoH to access an API proxy if necessary. It also needs to work before the app is initialised (because we may need to use the proxy at startup).
func (*Users) FinishLogin ¶
func (u *Users) FinishLogin(authClient pmapi.Client, auth *pmapi.Auth, mbPassphrase string) (user *User, err error)
FinishLogin finishes the login procedure and adds the user into the credentials store.
func (*Users) GetUser ¶
GetUser returns a user by `query` which is compared to users' ID, username or any attached e-mail address.
func (*Users) Login ¶
func (u *Users) Login(username, password string) (authClient pmapi.Client, auth *pmapi.Auth, err error)
Login authenticates a user by username/password, returning an authorised client and an auth object. The authorisation scope may not yet be full if the user has 2FA enabled.
func (*Users) SendMetric ¶
SendMetric sends a metric. We don't want to return any errors, only log them.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package credentials implements our struct stored in keychain.
|
Package credentials implements our struct stored in keychain. |
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |