authHelpers

package
v0.0.0-...-6c9bf34 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const UniversalAuthUserKey authHelpersContextKey = "Universal-Auth-User-Key"

Variables

This section is empty.

Functions

func HasRole

func HasRole(c *gin.Context, role string) bool

HasRole проверяет, имеет ли текущий пользователь указанную роль в своих JWT-клеймах. Возвращает false, если клеймы отсутствуют или роль не найдена.

Параметры:

  • c: контекст Gin, содержащий данные запроса и аутентификации.
  • role: строка с названием роли (например, "admin", "moderator").

Возвращает:

  • bool: true, если пользователь имеет указанную роль; иначе false.

func IsAdminAny

func IsAdminAny(c *gin.Context, userID string) bool

IsAdminAny проверяет, является ли указанный пользователь (по ID) администратором. Использует внешний вызов authhttp.IsAdmin с передачей пула соединений к базе данных. Не требует, чтобы пользователь был текущим — подходит для проверки любых пользователей.

Параметры:

  • c: контекст Gin, из которого извлекается пул соединений к PostgreSQL.
  • userID: строковый идентификатор пользователя, статус администратора которого нужно проверить.

Возвращает:

  • bool: true, если пользователь с указанным ID является администратором; иначе false.

Ошибки при обращении к БД игнорируются, и в случае ошибки возвращается false. Паникует если в текущем контексте не найден *pgxpool.Pool.

func IsAdminCurrent

func IsAdminCurrent(c *gin.Context) bool

IsAdminCurrent проверяет, является ли текущий аутентифицированный пользователь администратором. Проверка включает два этапа:

  • наличие роли "admin" в JWT-клеймах;
  • подтверждение статуса администратора через вызов authhttp.IsAdmin с использованием пула БД.

Если клеймы отсутствуют, роль не совпадает или возникает ошибка при проверке в БД — возвращает false.

Параметры:

  • c: контекст Gin с данными запроса и внедрённым пулом соединений к PostgreSQL.

Возвращает:

  • bool: true, если пользователь — действующий администратор; иначе false.

Паникует если в текущем контексте не найден *pgxpool.Pool.

func MustGetPgxPool

func MustGetPgxPool(c *gin.Context) *pgxpool.Pool

MustGetPgxPool извлекает пул соединений к PostgreSQL из контекста Gin или паникует, если он не установлен.

Гарантирует возврат валидного *pgxpool.Pool. Предназначен для использования в функциях, которым обязательно требуется доступ к базе данных. Если пул не найден в контексте — вызывает panic с сообщением о критической ошибке.

Возвращаемое значение:

  • Указатель на *pgxpool.Pool, готовый к использованию для выполнения SQL-запросов.

func SetPgxPool

func SetPgxPool(c *gin.Context, pool *pgxpool.Pool)

SetPgxPool сохраняет пул соединений к PostgreSQL (*pgxpool.Pool) в контексте Gin.

Используется для внедрения пула БД в запрос, чтобы он был доступен в middleware, хендлерах и вспомогательных функциях, таким как IsAdminAny или IsAdminCurrent. Должен вызываться на раннем этапе обработки запроса, например, через middleware или в рамках инициализации роутера.

Параметры:

  • c: контекст Gin, в который будет сохранён пул соединений.
  • pool: указатель на *pgxpool.Pool, полученный при инициализации подключения к базе данных.

Types

type IAuthUser

type IAuthUser interface {
	// contains filtered or unexported methods
}

IAuthUser — интерфейс, описывающий методы для получения данных аутентифицированного пользователя из JWT-токена. Реализуется типом *universalAuthUser и используется в middleware, хендлерах и сервисах для безопасного доступа к данным пользователя. Все методы, возвращающие значение и ошибку, не паникуют при отсутствии данных — вместо этого возвращают соответствующую ошибку. Для случаев, когда данные гарантированно должны быть, предоставляются Must-методы, которые паникуют при ошибке.

func GetUser

func GetUser(c *gin.Context) (IAuthUser, error)

func MustGetUser

func MustGetUser(c *gin.Context) IAuthUser

Source Files

  • universal_auth_user.go

Jump to

Keyboard shortcuts

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