secure

package
v0.14.2 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2024 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

func UserGroupFromContext(ctx context.Context) string

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

func UserIDFromContext

func UserIDFromContext(ctx context.Context) primitive.ObjectID

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

Types

type Account

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

type Database

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

type Provider

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

func (*Provider) CreateProfile

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

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

func (*Provider) CreateSession

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

func (*Provider) Delete

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

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

func (*Provider) Find

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

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

func (*Provider) Get

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

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

func (*Provider) Set

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

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

type ProviderData

type ProviderData map[string]string

type Response

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

type SecureWorker

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

func NewSecureWorker

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

func (*SecureWorker) AuthorizationMiddleware

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

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

func (*SecureWorker) CreateUserSession

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

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

func (*SecureWorker) DeleteAllUserSessions

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

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

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

func (*SecureWorker) DeleteAuthorizationCookies

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

func (*SecureWorker) DeleteUserSession

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

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

func (*SecureWorker) MakeAuthorizationProvider

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

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

func (*SecureWorker) RefreshSessionTokens

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

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

func (*SecureWorker) RefreshTokenHandler

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

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

type UserTokenData

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