generatedid

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Oct 27, 2026 License: AGPL-3.0 Imports: 1 Imported by: 0

Documentation

Overview

Package generatedid — форма идентификатора, который порождает продукт (задача PRO-Robotech/kaname#908).

Предмет

Продукт чеканит идентификаторы одной общей формы: короткий префикс вида (два — четыре строчных латинских знака), необязательный разделитель `-` или `_` и тело из 17 знаков crockford-base32 в нижнем регистре, без `i`, `l`, `o`, `u` (`usr…`, `sva…`, `sva_…`, `ak-…`, `cag_…`).

Зачем публичный пакет

Форма — предмет двух сторон, и у каждой она решает о доступе:

  • страж старта службы: публичный принципал анонимного чтения не вправе иметь эту форму, иначе анонимный токен стал бы токеном настоящей учётки;
  • приёмная сторона реестра платформы: форму субъекта, пришедшего в токене, она обязана судить ЭТИМ определением, а не своей копией выражения.

Второе выражение разошлось бы с этим молча, и неверной была бы их разница. Поэтому определение одно, здесь: страж службы читает его отсюда, а потребитель вне модуля обязан подключать пакет пином модуля. Единственность определения в этом модуле держит проба пакета `TestGeneratedIDForm_HasOneHomeInThePublicPackage`.

Чего предикат не утверждает

Совпадение формы — не существование учётки и не её вид: о том и другом судит служба доступа по своим строкам. Формы одного вида (`^usr…`, `^ak-…`) — сужения этой, и предмет их валидаторов свой. Идентификаторы, посеянные продуктом не чеканкой (служебные учётки модулей по имени), этой формы не имеют и предикатом не опознаются.

Index

Constants

View Source
const Pattern = `^[a-z]{2,4}[-_]?[0-9a-hjkmnp-tv-z]{17}$`

Pattern — объявленная форма порождённого идентификатора: текст для отказа, который называет форму, и выражение, которым судит Matches.

Variables

This section is empty.

Functions

func Matches

func Matches(id string) bool

Matches — id имеет форму порождённого продуктом идентификатора. Строка судится как есть: пробел по краю, верхний регистр и запись субъекта модели (`user:<id>`) формой не являются.

Types

This section is empty.

Jump to

Keyboard shortcuts

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