Documentation
¶
Overview ¶
Package jwt - реализация jwt с возможностью нескольких сессий.
Также пакет содержит общие ошибки и структуры для авторизации с помощью jwt.
О том, как работает jwt - https://habr.com/ru/post/340146/.
Примеры использования приведены в пакетах с реализациями интерфейса AuthProvider.
Index ¶
- Constants
- Variables
- func Auth(ctx context.Context, token string, purpose Purpose, platform structs.Platform, ...) (*structs.Account, int64, error)
- func AuthWithInfo(ctx context.Context, token string, purpose Purpose, platform structs.Platform, ...) (*structs.Account, int64, proto.Message, error)
- func CreateTokens(ctx context.Context, role structs.Role, id int64) (string, int64, string, int64, error)
- func DropOldTokens(ctx context.Context, timestamp int64) error
- func DropTokens(ctx context.Context, role structs.Role, id, number int64) error
- func Logout(ctx context.Context, role structs.Role, id int64) error
- func ReCreateTokens(ctx context.Context, role structs.Role, id, number int64) (string, int64, string, int64, error)
- func SetDefaultAuth(f AuthProvider)
- type AuthProvider
- type Purpose
Constants ¶
const ( PurposeAccess = Purpose(iota) // access токен PurposeRefresh // refresh токен )
Variables ¶
var ( ParseTokenErr = errors.New("parse token failed") // ParseTokenErr - не удалось распарсить токен ExpiredTokenErr = errors.New("expired token") // ExpiredTokenErr - токен просрочен InvalidTokenPurposeErr = errors.New("invalid token purpose") // InvalidTokenPurposeErr - некорректный purpose у токена InvalidTokenErr = errors.New("invalid token") // InvalidTokenErr - не удалось распарсить один из claim'ов токена )
Functions ¶
func Auth ¶
func Auth(ctx context.Context, token string, purpose Purpose, platform structs.Platform, versions []string, disabled ...structs.Role) (*structs.Account, int64, error)
Auth - вызов метода Auth у провайдера по умолчанию
func AuthWithInfo ¶
func AuthWithInfo(ctx context.Context, token string, purpose Purpose, platform structs.Platform, versions []string, disabled ...structs.Role) (*structs.Account, int64, proto.Message, error)
AuthWithInfo - вызов метода AuthWithInfo у провайдера по умолчанию
func CreateTokens ¶
func CreateTokens(ctx context.Context, role structs.Role, id int64) (string, int64, string, int64, error)
CreateTokens - вызов метода CreateTokens у провайдера по умолчанию
func DropOldTokens ¶
DropOldTokens - вызов метода DropOldTokens у провайдера по умолчанию
func DropTokens ¶
DropTokens - вызов метода DropTokens у провайдера по умолчанию
func ReCreateTokens ¶
func ReCreateTokens(ctx context.Context, role structs.Role, id, number int64) (string, int64, string, int64, error)
ReCreateTokens - вызов метода ReCreateTokens у провайдера по умолчанию
func SetDefaultAuth ¶
func SetDefaultAuth(f AuthProvider)
SetDefaultAuth - установка провайдера по умолчанию
Types ¶
type AuthProvider ¶
type AuthProvider interface { // Auth - получение аккаунта по логину/паролю Auth(ctx context.Context, token string, purpose Purpose, platform structs.Platform, versions []string, disabled ...structs.Role) (*structs.Account, int64, error) // AuthWithInfo - получение аккаунта и полного ответа(полная структура аккаунта, // упакованная в ответ на запрос согласно определению API) на запрос авторизации по jwt-токену AuthWithInfo(ctx context.Context, token string, purpose Purpose, platform structs.Platform, versions []string, disabled ...structs.Role) (*structs.Account, int64, proto.Message, error) // Logout - удаление токенов Logout(ctx context.Context, role structs.Role, id int64) error // CreateTokens - создание новых токенов для пользователя CreateTokens(ctx context.Context, role structs.Role, id int64) (string, int64, string, int64, error) // ReCreateTokens - создание новых токенов для фиксированной сессии пользователя ReCreateTokens(ctx context.Context, role structs.Role, id, number int64) (string, int64, string, int64, error) // DropTokens - удаление токена DropTokens(ctx context.Context, role structs.Role, id, number int64) error // DropOldTokens - удаление просроченных токенов DropOldTokens(ctx context.Context, timestamp int64) error }
AuthProvider - интерфейс провайдера авторизации по jwt