secure

package
v0.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoUserIdClaim       = errors.New("в токене отсутствует user_id")
	ErrUnvalidUserID       = errors.New("user_id неверен или отсутствует")
	ErrNoGroupClaim        = errors.New("в токене отсутствует признак группу пользователя")
	ErrUnvalidGroup        = errors.New("признак группы неверен или отсутствует")
	ErrNoSessionClaim      = errors.New("в токене отсутствует ключ сессии")
	ErrUnvalidSession      = errors.New("ключ сессии неверен или отсутствует")
	ErrUnvalidRefreshToken = errors.New("передан неправильный refresh токен")
)
View Source
var (
	ErrUsernameIsEmpty = errors.New("username must by not empty. generating failed")
)

Functions

func UserGroupFromContext added in v0.0.4

func UserGroupFromContext(ctx context.Context) string

Получение группы пользователя из контекста

func UserIDFromContext added in v0.0.4

func UserIDFromContext(ctx context.Context) primitive.ObjectID

Получениеи идентификатора пользователя из контекста

Types

type Account added in v0.13.0

type Account struct {
	ID    primitive.ObjectID `bson:"_id"`
	Group string             `bson:"group"`
}

type Database added in v0.13.0

type Database interface {
	Operation(func(ctx context.Context, w *mongo.Database) error) error
}

type Provider added in v0.13.0

type Provider struct {
	Response Response
	// contains filtered or unexported fields
}

func (*Provider) CreateProfile added in v0.13.0

func (p *Provider) CreateProfile(username, sessionName string, providerData ProviderData) (primitive.ObjectID, *UserTokenData, error)

Метод служит для создания пользовательского профиля в системе

func (*Provider) CreateSession added in v0.13.0

func (p *Provider) CreateSession(userID primitive.ObjectID, sessionName string) (*UserTokenData, error)

func (*Provider) Delete added in v0.13.0

func (p *Provider) Delete(docID primitive.ObjectID) error

Метод производит удаление информации о провайдере из документа пользователя

func (*Provider) Find added in v0.13.0

func (p *Provider) Find(identityKey string) (primitive.ObjectID, *ProviderData, error)

Метод производит поиск документа пользователя по значению поля идентификации провайдера

func (*Provider) Get added in v0.13.0

func (p *Provider) Get(docID primitive.ObjectID) (*ProviderData, error)

Метод производит поиск записанной провайдером информации в документе пользователя

func (*Provider) Set added in v0.13.0

func (p *Provider) Set(docID primitive.ObjectID, data ProviderData) error

Метод производит перезапись информации о провайдере в документе пользователя

type ProviderData added in v0.13.0

type ProviderData map[string]string

type Response added in v0.13.0

type Response interface {
	ResponseJSON(w http.ResponseWriter, code int, obj interface{})
}

type SecureWorker added in v0.13.0

type SecureWorker struct {
	// contains filtered or unexported fields
}

func NewSecureWorker added in v0.13.0

func NewSecureWorker(salt, accountCollection string, response Response, db Database) *SecureWorker

func (*SecureWorker) AuthorizationMiddleware added in v0.13.0

func (sw *SecureWorker) AuthorizationMiddleware(next http.Handler) http.Handler

Middleware для аутентификации пользователя на основе access_token'a

Токен должен быть передан в запросе одним из следующих методов: Header - Authorirzation: Bearer <access_token> Cookie - name "access_token" value <access_token> Query - named ?token=<access_token>

func (*SecureWorker) CloseSessionHandler added in v0.13.0

func (sw *SecureWorker) CloseSessionHandler(w http.ResponseWriter, r *http.Request)

func (*SecureWorker) CreateUserSession added in v0.13.0

func (sw *SecureWorker) CreateUserSession(userID primitive.ObjectID, sessionName string) (*UserTokenData, error)

Создание новой сессии пользователя

func (*SecureWorker) DeleteAllUserSessions added in v0.13.0

func (sw *SecureWorker) DeleteAllUserSessions(userID primitive.ObjectID) error

Метод позволяет удалить все сессии пользователя

!ВАЖНО активные access_token'ы продолжат работать в рамках своего срока годности

func (*SecureWorker) DeleteAuthorizationCookies added in v0.13.0

func (sw *SecureWorker) DeleteAuthorizationCookies(w http.ResponseWriter)

func (*SecureWorker) DeleteUserSession added in v0.13.0

func (sw *SecureWorker) DeleteUserSession(userID primitive.ObjectID, sessionID string) error

Метод позволяет удалить одну сессию пользователя по ее идентификатору

func (*SecureWorker) MakeAuthorizationProvider added in v0.13.0

func (sw *SecureWorker) MakeAuthorizationProvider(name, identityField string) *Provider

Метод производит создания сущьности для работы провайдера авторизации

func (*SecureWorker) RefreshSessionTokens added in v0.13.0

func (sw *SecureWorker) RefreshSessionTokens(refreshToken string) (*UserTokenData, error)

Обновление токена пользователя для доступа к ресурсам

func (*SecureWorker) RefreshTokenHandler added in v0.13.0

func (sw *SecureWorker) RefreshTokenHandler(w http.ResponseWriter, r *http.Request)

Метод для обновления access_token'а пользователя на основе refresh_token'а получаемого одним из следующих методов

Header - Authorization: <refresh_token> Cookie - name "refresh_token" value <refresh_token> Query - named ?refresh_token=<refresh_token>

Метод возвращает структуру UserTokenData содержащую обновленные токены для пользователя

func (*SecureWorker) SetAuthorizationCookies added in v0.13.0

func (sw *SecureWorker) SetAuthorizationCookies(w http.ResponseWriter, userTokens *UserTokenData)

type UserTokenData added in v0.5.0

type UserTokenData struct {
	RefreshToken string `json:"refresh_token"`
	AccessToken  string `json:"access_token"`
	Type         string `json:"type"`
	Expire       int    `json:"expire"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL