Documentation
¶
Index ¶
Constants ¶
const ( // RoleUser defines the role every user belong to. RoleUser = "user" // RoleAdmin defines the role only admin users belong to. RoleAdmin = "admin" // TokenScopeAPI defines the scope for granting general API access. TokenScopeAPI = "api" // TokenScopeAuthRefresh defines the scope for granting refresh of // authentication. TokenScopeAuthRefresh = "auth:refresh" )
const ( // InternalServerError specifies an unknown error. InternalServerError = ErrorType("INTERNAL_SERVER") // BadRequestError specifies a validation realted error. BadRequestError = ErrorType("BAD_REQUEST") UnauthorizedError = ErrorType("UNAUTHORIZED") // ForbiddenError specifies authorization (permission) related errors. ForbiddenError = ErrorType("FORBIDDEN") // NotFoundError specifies errors related with non-existent resources. NotFoundError = ErrorType("NOT_FOUND") // ConflictError specifies errors related with a resource conflict. ConflictError = ErrorType("CONFLICT") // UnexpectedError specifies errors occurring unexpectedly, caused by technical issues. UnexpectedError = ErrorType("UNEXPECTED") )
const ( // TokenClaimSubject defines the token claim holding the token's subject. TokenClaimSubject = "sub" // TokenClaimRoles defines the token claim holding the user's roles. TokenClaimRoles = "roles" // TokenClaimScopes defines the token claim holding the token's scopes. TokenClaimScopes = "scope" )
Variables ¶
This section is empty.
Functions ¶
func RemoveErrorType ¶
RemoveErrorType removes associated error type information form the given error.
func SetErrorType ¶
SetErrorType associates the given error type with the given error.
Types ¶
type AccessTokenClaims ¶
type AccessTokenClaims struct {
jwt.StandardClaims
Scope string `json:"scope"`
Roles []string `json:"roles"`
}
AccessTokenClaims defines all JWT (standard and custom) claims contained in an accesss tokens.
type AuthService ¶
type AuthService interface {
// AuthenticateUserByCredentials tries to authenticate the user using the
// given username and password and returns a new access token in case the
// credentials are valid.
AuthenticateUserByCredentials(username, password string) (*Token, error)
// AuthenicateUserByRefreshToken tries to authenticate the user using the
// given refresh token and returns a new access token in case the
// provided refresh token is valid.
AuthenicateUserByRefreshToken(token string) (*Token, error)
// SignAccessToken signs the given token and returns the access token
// encoded as a JWT.
SignAccessToken(token *Token) (string, error)
// SignRefreshToken signs the given token and returns the refresh token
// encoded as a JWT.
SignRefreshToken(token *Token) (string, error)
// ExtractScopes extracts the token scopes from the given set of claims.
ExtractScopes(claims jwt.MapClaims) []string
// ExtractUsername extracts the username from the given set of claims.
ExtractUsername(claims jwt.MapClaims) *string
// ExtractRoles extracts the user's roles from the given set of claims.
ExtractRoles(claims jwt.MapClaims) []string
}
AuthService defines an application service for authentication and authorization use-cases.
func NewAuthService ¶
func NewAuthService( config *config.Configuration, users domain.Users, tokenKeyResolver TokenKeyResolver, ) AuthService
NewAuthService returns an auth service based on the given user repository and configuration.
type DocumentService ¶
type DocumentService interface {
// GetUserDocuments returns the given user's documents with respect to the
// given page request.
GetUserDocuments(username string, pr domain.PageRequest) ([]domain.Document, int64, error)
// SearchUserDocuments returns all documents matching the given query with respect to the given page request.
SearchUserDocuments(username, query string, pr domain.PageRequest) ([]domain.DocumentSearchResult, int64, error)
// GetUserDocumentByDocumentNumber returns the document with the given document number owned by the given user.
GetUserDocumentByDocumentNumber(username string, documentNumber uint) (*domain.Document, error)
// CreateNewDocument creates the given new document owned by the user with the given username.
CreateNewDocument(username string, document *domain.Document) (*domain.Document, error)
// GetUserDocumentPagesByDocumentNumber returns the document pages for the document with the given document number with respect to the given
// username and page request.
GetUserDocumentPagesByDocumentNumber(username string, documentNumber uint, pr domain.PageRequest) ([]domain.DocumentPage, int64, error)
// GetUserDocumentPageByDocumentNumberAndPageNumber returns the page with the given page number for the document with the given document number,
// accessible by the user with the given username.
GetUserDocumentPageByDocumentNumberAndPageNumber(username string, documentNumber uint, pageNumber uint) (*domain.DocumentPage, error)
// AddPagesToUserDocument adds the given pages to the document with the given ID.
AddPagesToUserDocument(username string, documentNumber uint, files []*multipart.FileHeader) ([]domain.DocumentPage, error)
// GetUserDocumentPageContent returns a reader to a document pages content, if present.
GetUserDocumentPageContent(username string, documentNumber uint, pageNumber uint) (io.ReadCloser, error)
}
DocumentService defines an application service for managing document-related use cases.
func NewDocumentService ¶
func NewDocumentService( users domain.Users, documents domain.Documents, documentArchive domain.DocumentArchive, documentIndex domain.DocumentIndex, documentRegistry domain.DocumentRegistry, ) DocumentService
NewDocumentService creates a new document service.
type ErrorType ¶
type ErrorType string
ErrorType enumerates all possible application error types.
func GetErrorType ¶
GetErrorType retreives an error's associated error type.
type RefreshTokenClaims ¶
type RefreshTokenClaims struct {
jwt.StandardClaims
Scope string `json:"scope"`
}
RefreshTokenClaims defines all JWT claims contained in a refresh token.
type Token ¶
Token defines a struct for holding authorization information.
func (*Token) GetAccessTokenClaims ¶
func (t *Token) GetAccessTokenClaims(issuer, audience, scope string) AccessTokenClaims
GetAccessTokenClaims returns the JWT accesss token claims for the given Token instance.
func (*Token) GetRefreshTokenClaims ¶
func (t *Token) GetRefreshTokenClaims(issuer, audience, scope string) RefreshTokenClaims
GetRefreshTokenClaims returns the JWT refresh token claims for the given Token instance.
func (*Token) GrantsGroupMembership ¶
GrantsGroupMembership returns a boolean value indicating whether the token instance grants the given role.
type TokenKeyResolver ¶
TokenKeyResolver defines a function type for a function that obtains a verification key for a given token.
func ConfigTokenKeyResolver ¶
func ConfigTokenKeyResolver(config *config.Configuration) TokenKeyResolver
ConfigTokenKeyResolver returns a token key resolver using the key from the given config.
type UserService ¶
type UserService interface {
// GetUserByUsername returns the user with the given username or
// an error in case no such user exists.
GetUserByUsername(username string) (*domain.User, error)
// GetUsers finds and returns users with respect to the given page request.
GetUsers(pr domain.PageRequest) ([]domain.User, int64, error)
// Creates the given new user with the desired password as clear-text.
CreateNewUser(user *domain.User, password string) (*domain.User, error)
// Update user updates all possible field of the given user.
UpdateUser(user *domain.User, password *string) (*domain.User, error)
// DeleteUser deletes the user with the given ID.
DeleteUser(username string) error
// UpdateUserPassword updates the password of the user with the given ID.
UpdateUserPassword(username string, currentPassword, newPassword string) error
}
UserService defines an application service for managing users use-cases.
func NewUserService ¶
func NewUserService(users domain.Users) UserService
NewUserService creates a new user service.