Documentation ¶
Overview ¶
Package app provides business logic.
Package app is a generated GoMock package.
Index ¶
- Constants
- Variables
- func InitMetrics(reg *prometheus.Registry)
- type AccessToken
- type App
- func (a *App) Authenticate(ctx Ctx, accessToken AccessToken) (*User, error)
- func (a *App) LoginByEmail(ctx Ctx, email string, password sensitive.String) (AccessToken, error)
- func (a *App) LoginByUserID(ctx Ctx, userID string, password sensitive.String) (AccessToken, error)
- func (a *App) Logout(ctx Ctx, accessToken AccessToken) error
- func (a *App) LogoutUser(ctx Ctx, userName dom.UserName) error
- func (a *App) Register(ctx Ctx, userID string, password sensitive.String, user *User) error
- type Appl
- type Config
- type Ctx
- type MatchUser
- type MockAppl
- func (m *MockAppl) Authenticate(arg0 Ctx, arg1 AccessToken) (*User, error)
- func (m *MockAppl) EXPECT() *MockApplMockRecorder
- func (m *MockAppl) LoginByEmail(arg0 Ctx, email string, password sensitive.String) (AccessToken, error)
- func (m *MockAppl) LoginByUserID(arg0 Ctx, userID string, password sensitive.String) (AccessToken, error)
- func (m *MockAppl) Logout(arg0 Ctx, arg1 AccessToken) error
- func (m *MockAppl) LogoutUser(arg0 Ctx, arg1 dom.UserName) error
- func (m *MockAppl) Register(arg0 Ctx, userID string, password sensitive.String, arg3 *User) error
- type MockApplMockRecorder
- func (mr *MockApplMockRecorder) Authenticate(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockApplMockRecorder) LoginByEmail(arg0, email, password interface{}) *gomock.Call
- func (mr *MockApplMockRecorder) LoginByUserID(arg0, userID, password interface{}) *gomock.Call
- func (mr *MockApplMockRecorder) Logout(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockApplMockRecorder) LogoutUser(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockApplMockRecorder) Register(arg0, userID, password, arg3 interface{}) *gomock.Call
- type MockRepo
- func (m *MockRepo) AddAccessToken(arg0 Ctx, arg1 AccessToken, arg2 dom.UserName) error
- func (m *MockRepo) AddUser(arg0 Ctx, arg1 User) error
- func (m *MockRepo) DelAccessToken(arg0 Ctx, arg1 AccessToken) error
- func (m *MockRepo) DelAccessTokens(arg0 Ctx, arg1 dom.UserName) error
- func (m *MockRepo) EXPECT() *MockRepoMockRecorder
- func (m *MockRepo) GetUser(arg0 Ctx, arg1 dom.UserName) (*User, error)
- func (m *MockRepo) GetUserByAccessToken(arg0 Ctx, arg1 AccessToken) (*User, error)
- func (m *MockRepo) GetUserByEmail(arg0 Ctx, arg1 string) (*User, error)
- type MockRepoMockRecorder
- func (mr *MockRepoMockRecorder) AddAccessToken(arg0, arg1, arg2 interface{}) *gomock.Call
- func (mr *MockRepoMockRecorder) AddUser(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockRepoMockRecorder) DelAccessToken(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockRepoMockRecorder) DelAccessTokens(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockRepoMockRecorder) GetUser(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockRepoMockRecorder) GetUserByAccessToken(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockRepoMockRecorder) GetUserByEmail(arg0, arg1 interface{}) *gomock.Call
- type PassHash
- type Repo
- type Role
- type User
Constants ¶
const ServiceName = "auth"
ServiceName provides name of this microservice for logs/metrics.
Variables ¶
var ( ErrAccessDenied = errors.New("access denied") ErrAlreadyExist = errors.New("already exists") ErrNotFound = errors.New("not found") ErrValidate = errors.New("validate") ErrWrongPassword = errors.New("wrong password") )
Errors.
var (
Metric def.Metrics // Common metrics used by all packages.
)
Functions ¶
func InitMetrics ¶
func InitMetrics(reg *prometheus.Registry)
InitMetrics must be called once before using this package. It registers and initializes metrics used by this package.
Types ¶
type AccessToken ¶
type AccessToken string
AccessToken is a token tied to some identity and permissions.
func (AccessToken) Format ¶
func (s AccessToken) Format(f fmt.State, c rune)
Format wraps sensitive.String.
func (AccessToken) MarshalJSON ¶
func (s AccessToken) MarshalJSON() ([]byte, error)
MarshalJSON wraps sensitive.String.
func (AccessToken) MarshalText ¶
func (s AccessToken) MarshalText() ([]byte, error)
MarshalText wraps sensitive.String.
type App ¶
type App struct {
// contains filtered or unexported fields
}
App implements interface Appl.
func (*App) Authenticate ¶
func (a *App) Authenticate(ctx Ctx, accessToken AccessToken) (*User, error)
func (*App) LoginByEmail ¶
func (*App) LoginByUserID ¶
type Appl ¶
type Appl interface { // Register creates and returns new user account. // User can provide optional userID (username). // These fields will be ignored in input and set automatically: // Name, PassHash, Role, CreateTime. // If userID=="admin" then user's role will be set to RoleAdmin. // Errors: ErrAlreadyExist, ErrValidate. Register(_ Ctx, userID string, password sensitive.String, _ *User) error // LoginByUserID creates and returns AccessToken for the user. // Errors: ErrNotFound, ErrWrongPassword. LoginByUserID(_ Ctx, userID string, password sensitive.String) (AccessToken, error) // LoginByEmail work in same way as LoginByUserID. LoginByEmail(_ Ctx, email string, password sensitive.String) (AccessToken, error) // Authenticate returns identity tied to AccessToken. // Errors: ErrNotFound. Authenticate(Ctx, AccessToken) (*User, error) // Logout invalidates given AccessToken. // Errors: none. Logout(_ Ctx, _ AccessToken) error // LogoutUser invalidates all user's AccessToken. // Errors: none. LogoutUser(_ Ctx, _ dom.UserName) error }
Appl provides application features (use cases) service.
type MatchUser ¶
type MatchUser struct{ *User }
MatchUser provides gomock.Matcher for matching User and *User:
- empty Name match any Name
- PassHash is ignored
- CreateTime is ignored
On successful match Name/PassHash/CreateTime of matching User will be set to values from matched User (which means empty Name will match any Name only once, but next time it'll match only previous Name).
type MockAppl ¶
type MockAppl struct {
// contains filtered or unexported fields
}
MockAppl is a mock of Appl interface.
func NewMockAppl ¶
func NewMockAppl(ctrl *gomock.Controller) *MockAppl
NewMockAppl creates a new mock instance.
func (*MockAppl) Authenticate ¶
func (m *MockAppl) Authenticate(arg0 Ctx, arg1 AccessToken) (*User, error)
Authenticate mocks base method.
func (*MockAppl) EXPECT ¶
func (m *MockAppl) EXPECT() *MockApplMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockAppl) LoginByEmail ¶
func (m *MockAppl) LoginByEmail(arg0 Ctx, email string, password sensitive.String) (AccessToken, error)
LoginByEmail mocks base method.
func (*MockAppl) LoginByUserID ¶
func (m *MockAppl) LoginByUserID(arg0 Ctx, userID string, password sensitive.String) (AccessToken, error)
LoginByUserID mocks base method.
func (*MockAppl) Logout ¶
func (m *MockAppl) Logout(arg0 Ctx, arg1 AccessToken) error
Logout mocks base method.
func (*MockAppl) LogoutUser ¶
LogoutUser mocks base method.
type MockApplMockRecorder ¶
type MockApplMockRecorder struct {
// contains filtered or unexported fields
}
MockApplMockRecorder is the mock recorder for MockAppl.
func (*MockApplMockRecorder) Authenticate ¶
func (mr *MockApplMockRecorder) Authenticate(arg0, arg1 interface{}) *gomock.Call
Authenticate indicates an expected call of Authenticate.
func (*MockApplMockRecorder) LoginByEmail ¶
func (mr *MockApplMockRecorder) LoginByEmail(arg0, email, password interface{}) *gomock.Call
LoginByEmail indicates an expected call of LoginByEmail.
func (*MockApplMockRecorder) LoginByUserID ¶
func (mr *MockApplMockRecorder) LoginByUserID(arg0, userID, password interface{}) *gomock.Call
LoginByUserID indicates an expected call of LoginByUserID.
func (*MockApplMockRecorder) Logout ¶
func (mr *MockApplMockRecorder) Logout(arg0, arg1 interface{}) *gomock.Call
Logout indicates an expected call of Logout.
func (*MockApplMockRecorder) LogoutUser ¶
func (mr *MockApplMockRecorder) LogoutUser(arg0, arg1 interface{}) *gomock.Call
LogoutUser indicates an expected call of LogoutUser.
func (*MockApplMockRecorder) Register ¶
func (mr *MockApplMockRecorder) Register(arg0, userID, password, arg3 interface{}) *gomock.Call
Register indicates an expected call of Register.
type MockRepo ¶
type MockRepo struct {
// contains filtered or unexported fields
}
MockRepo is a mock of Repo interface.
func NewMockRepo ¶
func NewMockRepo(ctrl *gomock.Controller) *MockRepo
NewMockRepo creates a new mock instance.
func (*MockRepo) AddAccessToken ¶
AddAccessToken mocks base method.
func (*MockRepo) DelAccessToken ¶
func (m *MockRepo) DelAccessToken(arg0 Ctx, arg1 AccessToken) error
DelAccessToken mocks base method.
func (*MockRepo) DelAccessTokens ¶
DelAccessTokens mocks base method.
func (*MockRepo) EXPECT ¶
func (m *MockRepo) EXPECT() *MockRepoMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockRepo) GetUserByAccessToken ¶
func (m *MockRepo) GetUserByAccessToken(arg0 Ctx, arg1 AccessToken) (*User, error)
GetUserByAccessToken mocks base method.
type MockRepoMockRecorder ¶
type MockRepoMockRecorder struct {
// contains filtered or unexported fields
}
MockRepoMockRecorder is the mock recorder for MockRepo.
func (*MockRepoMockRecorder) AddAccessToken ¶
func (mr *MockRepoMockRecorder) AddAccessToken(arg0, arg1, arg2 interface{}) *gomock.Call
AddAccessToken indicates an expected call of AddAccessToken.
func (*MockRepoMockRecorder) AddUser ¶
func (mr *MockRepoMockRecorder) AddUser(arg0, arg1 interface{}) *gomock.Call
AddUser indicates an expected call of AddUser.
func (*MockRepoMockRecorder) DelAccessToken ¶
func (mr *MockRepoMockRecorder) DelAccessToken(arg0, arg1 interface{}) *gomock.Call
DelAccessToken indicates an expected call of DelAccessToken.
func (*MockRepoMockRecorder) DelAccessTokens ¶
func (mr *MockRepoMockRecorder) DelAccessTokens(arg0, arg1 interface{}) *gomock.Call
DelAccessTokens indicates an expected call of DelAccessTokens.
func (*MockRepoMockRecorder) GetUser ¶
func (mr *MockRepoMockRecorder) GetUser(arg0, arg1 interface{}) *gomock.Call
GetUser indicates an expected call of GetUser.
func (*MockRepoMockRecorder) GetUserByAccessToken ¶
func (mr *MockRepoMockRecorder) GetUserByAccessToken(arg0, arg1 interface{}) *gomock.Call
GetUserByAccessToken indicates an expected call of GetUserByAccessToken.
func (*MockRepoMockRecorder) GetUserByEmail ¶
func (mr *MockRepoMockRecorder) GetUserByEmail(arg0, arg1 interface{}) *gomock.Call
GetUserByEmail indicates an expected call of GetUserByEmail.
type Repo ¶
type Repo interface { // AddUser creates user. // Errors: ErrAlreadyExist. AddUser(Ctx, User) error // GetUser reads User by UserName. // Errors: ErrNotFound. GetUser(Ctx, dom.UserName) (*User, error) // GetUserByEmail reads User by email. // Errors: ErrNotFound. GetUserByEmail(Ctx, string) (*User, error) // GetUserByAccessToken reads User by AccessToken. // Errors: ErrNotFound. GetUserByAccessToken(Ctx, AccessToken) (*User, error) // AddAccessToken creates and returns AccessToken for given user. // Errors: ErrNotFound. AddAccessToken(Ctx, AccessToken, dom.UserName) error // DelAccessToken deletes given AccessToken. // Errors: none. DelAccessToken(Ctx, AccessToken) error // DelAccessTokens deletes all AccessToken for given user. // Errors: none. DelAccessTokens(Ctx, dom.UserName) error }
Repo provides data storage.