Documentation
¶
Index ¶
- Constants
- Variables
- type Authn
- type Authz
- type AuthzReq
- type Backup
- type Identity
- type Key
- type KeyRepository
- type Keys
- type Members
- type MembersRepository
- type Org
- type OrgMember
- type OrgMembersPage
- type OrgMetadata
- type OrgRepository
- type Orgs
- type OrgsPage
- type PageMetadata
- type Roles
- type RolesRepository
- type Service
- type Tokenizer
- type User
Constants ¶
const ( // LoginKey is temporary User key received on successful login. LoginKey uint32 = iota // RecoveryKey represents a key for resseting password. RecoveryKey // APIKey enables the one to act on behalf of the user. APIKey )
const ( // RoleRootAdmin is the super admin role. RoleRootAdmin = "root" // RoleAdmin is the admin role. RoleAdmin = "admin" )
const ( Admin = "admin" Owner = "owner" Editor = "editor" Viewer = "viewer" RootSub = "root" OrgSub = "org" )
Variables ¶
var ( // ErrInvalidKeyIssuedAt indicates that the Key is being used before it's issued. ErrInvalidKeyIssuedAt = errors.New("invalid issue time") // ErrKeyExpired indicates that the Key is expired. ErrKeyExpired = errors.New("use of expired key") // ErrAPIKeyExpired indicates that the Key is expired // and that the key type is API key. ErrAPIKeyExpired = errors.New("use of expired API key") )
var ( // ErrAssignMember indicates failure to assign member to org. ErrAssignMember = errors.New("failed to assign member to org") // ErrUnassignMember indicates failure to unassign member from an org. ErrUnassignMember = errors.New("failed to unassign member from org") // ErrAssignGroup indicates failure to assign group to org. ErrAssignGroup = errors.New("failed to assign group to org") // ErrUnassignGroup indicates failure to unassign group from org. ErrUnassignGroup = errors.New("failed to unassign group from org") // ErrOrgNotEmpty indicates org is not empty, can't be deleted. ErrOrgNotEmpty = errors.New("org is not empty") // ErrOrgMemberAlreadyAssigned indicates that members is already assigned. ErrOrgMemberAlreadyAssigned = errors.New("org member is already assigned") // ErrOrgGroupAlreadyAssigned indicates that group is already assigned. ErrOrgGroupAlreadyAssigned = errors.New("org group is already assigned") )
var ( // ErrRetrieveMembersByOrg failed to retrieve members by org. ErrRetrieveMembersByOrg = errors.New("failed to retrieve members by org") // ErrRetrieveOrgsByMember failed to retrieve orgs by member ErrRetrieveOrgsByMember = errors.New("failed to retrieve orgs by member") )
Functions ¶
This section is empty.
Types ¶
type Authn ¶
type Authn interface { // Identify validates token token. If token is valid, content // is returned. If token is invalid, or invocation failed for some // other reason, non-nil error value is returned in response. Identify(ctx context.Context, token string) (Identity, error) }
Authn specifies an API that must be fullfiled by the domain service implementation, and all of its decorators (e.g. logging & metrics). Token is a string value of the actual Key and is used to authenticate an Auth service request.
type Authz ¶
Authz represents a authorization service. It exposes functionalities through `auth` to perform authorization.
type Key ¶
type Key struct { ID string Type uint32 IssuerID string Subject string IssuedAt time.Time ExpiresAt time.Time }
Key represents API key.
type KeyRepository ¶
type KeyRepository interface { // Save persists the Key. A non-nil error is returned to indicate // operation failure Save(context.Context, Key) (string, error) // Retrieve retrieves Key by its unique identifier. Retrieve(context.Context, string, string) (Key, error) // Remove removes Key with provided ID. Remove(context.Context, string, string) error }
KeyRepository specifies Key persistence API.
type Keys ¶ added in v0.24.0
type Keys interface { // Issue issues a new Key, returning its token value alongside. Issue(ctx context.Context, token string, key Key) (Key, string, error) // Revoke removes the Key with the provided id that is // issued by the user identified by the provided key. Revoke(ctx context.Context, token, id string) error // RetrieveKey retrieves data for the Key identified by the provided // ID, that is issued by the user identified by the provided key. RetrieveKey(ctx context.Context, token, id string) (Key, error) }
Keys specifies an API that must be fullfiled by the domain service implementation, and all of its decorators (e.g. logging & metrics).
type Members ¶ added in v0.24.0
type Members interface { // AssignMembers adds members with member emails into the org identified by orgID. AssignMembers(ctx context.Context, token, orgID string, oms ...OrgMember) error // UnassignMembers removes members with member ids from org identified by orgID. UnassignMembers(ctx context.Context, token string, orgID string, memberIDs ...string) error // UpdateMembers updates members role in an org. UpdateMembers(ctx context.Context, token, orgID string, oms ...OrgMember) error // ListMembersByOrg retrieves members assigned to an org identified by orgID. ListMembersByOrg(ctx context.Context, token, orgID string, pm PageMetadata) (OrgMembersPage, error) // ViewMember retrieves member identified by memberID in org identified by orgID. ViewMember(ctx context.Context, token, orgID, memberID string) (OrgMember, error) }
Memberships specifies an API that must be fullfiled by the domain service implementation, and all of its decorators (e.g. logging & metrics).
type MembersRepository ¶ added in v0.24.0
type MembersRepository interface { // Save saves membershipa. Save(ctx context.Context, oms ...OrgMember) error // Update updates memberships. Update(ctx context.Context, oms ...OrgMember) error // Remove removes memberships. Remove(ctx context.Context, orgID string, memberIDs ...string) error // RetrieveRole retrieves role of membership specified by memberID and orgID. RetrieveRole(ctx context.Context, memberID, orgID string) (string, error) // RetrieveByOrgID retrieves members assigned to an org identified by orgID. RetrieveByOrgID(ctx context.Context, orgID string, pm PageMetadata) (OrgMembersPage, error) // RetrieveAll retrieves all members. RetrieveAll(ctx context.Context) ([]OrgMember, error) }
type Org ¶
type Org struct { ID string OwnerID string Name string Description string Metadata OrgMetadata CreatedAt time.Time UpdatedAt time.Time }
Org represents the org information.
type OrgMembersPage ¶
type OrgMembersPage struct { PageMetadata OrgMembers []OrgMember }
OrgMembersPage contains page related metadata as well as list of members that belong to this page.
type OrgRepository ¶
type OrgRepository interface { // Save orgs Save(ctx context.Context, orgs ...Org) error // Update an org Update(ctx context.Context, org Org) error // Remove an org Remove(ctx context.Context, owner, id string) error // RetrieveByID retrieves org by its id RetrieveByID(ctx context.Context, id string) (Org, error) // RetrieveByOwner retrieves orgs by owner. RetrieveByOwner(ctx context.Context, ownerID string, pm PageMetadata) (OrgsPage, error) // RetrieveAll retrieves all orgs. RetrieveAll(ctx context.Context) ([]Org, error) // RetrieveByAdmin retrieves all orgs with pagination. RetrieveByAdmin(ctx context.Context, pm PageMetadata) (OrgsPage, error) // RetrieveByMemberID list of orgs that member belongs to RetrieveByMemberID(ctx context.Context, memberID string, pm PageMetadata) (OrgsPage, error) }
OrgRepository specifies an org persistence API.
type Orgs ¶
type Orgs interface { // CreateOrg creates new org. CreateOrg(ctx context.Context, token string, org Org) (Org, error) // UpdateOrg updates the org identified by the provided ID. UpdateOrg(ctx context.Context, token string, org Org) (Org, error) // ViewOrg retrieves data about the org identified by ID. ViewOrg(ctx context.Context, token, id string) (Org, error) // ListOrgs retrieves orgs. ListOrgs(ctx context.Context, token string, pm PageMetadata) (OrgsPage, error) // ListOrgsByMember retrieves all orgs for member that is identified with memberID belongs to. ListOrgsByMember(ctx context.Context, token, memberID string, pm PageMetadata) (OrgsPage, error) // RemoveOrg removes the org identified with the provided ID. RemoveOrg(ctx context.Context, token, id string) error // Backup retrieves all orgs and org members. Only accessible by admin. Backup(ctx context.Context, token string) (Backup, error) // Restore adds orgs and org members from a backup. Only accessible by admin. Restore(ctx context.Context, token string, backup Backup) error }
Orgs specifies an API that must be fullfiled by the domain service implementation, and all of its decorators (e.g. logging & metrics).
type OrgsPage ¶
type OrgsPage struct { PageMetadata Orgs []Org }
OrgsPage contains page related metadata as well as list of orgs that belong to this page.
type PageMetadata ¶
type PageMetadata struct { Total uint64 Offset uint64 Limit uint64 Name string Metadata OrgMetadata }
PageMetadata contains page metadata that helps navigation.
type RolesRepository ¶
type RolesRepository interface { // SaveRole saves the user role. SaveRole(ctx context.Context, id, role string) error // RetrieveRole retrieves the user role. RetrieveRole(ctx context.Context, id string) (string, error) // UpdateRole updates the user role. UpdateRole(ctx context.Context, id, role string) error // RemoveRole removes the user role. RemoveRole(ctx context.Context, id string) error }
type Service ¶
Service specifies an API that must be fulfilled by the domain service implementation, and all of its decorators (e.g. logging & metrics). Token is a string value of the actual Key and is used to authenticate an Auth service request.
func New ¶
func New(orgs OrgRepository, tc protomfx.ThingsServiceClient, uc protomfx.UsersServiceClient, keys KeyRepository, roles RolesRepository, members MembersRepository, idp uuid.IDProvider, tokenizer Tokenizer, duration time.Duration) Service
New instantiates the auth service implementation.
Directories
¶
Path | Synopsis |
---|---|
Package api contains implementation of Auth service HTTP API.
|
Package api contains implementation of Auth service HTTP API. |
grpc
Package grpc contains implementation of Auth service gRPC API.
|
Package grpc contains implementation of Auth service gRPC API. |
Package postgres contains Key repository implementations using PostgreSQL as the underlying database.
|
Package postgres contains Key repository implementations using PostgreSQL as the underlying database. |
Package tracing contains middlewares that will add spans to existing traces.
|
Package tracing contains middlewares that will add spans to existing traces. |