Documentation ¶
Index ¶
Constants ¶
const ( ContextUserKey ContextKey = "user-data" // key for storing user in context TokenSeparator string = "$" // Fields separator for token string )
Variables ¶
var ( ErrNoData = errors.New("no telegram data") ErrBadToken = errors.New("bad token") )
Functions ¶
func LoginHandler ¶
Types ¶
type TelegramUserData ¶
type TelegramUserData struct { TGID int64 `json:"id"` // telegram id FirstName string `json:"first_name"` // first name LastName string `json:"last_name"` // last name Username string `json:"username"` // username PhotoURL string `json:"photo_url"` // photo url AuthDate int64 `json:"auth_date"` // auth date UNIX timestamp Hash string `json:"hash"` // hash }
TelegramUserData - https://core.telegram.org/widgets/login#receiving-authorization-data
func FromContext ¶
func FromContext(r *http.Request) (TelegramUserData, error)
FromContext Get TelegramUserData that middleware put in context.
func FromJSON ¶
func FromJSON(r *http.Request) (TelegramUserData, error)
FromJSON TelegramUserData from body of request.
It doesn't check is data valid, all invalid/empty fields will be ignored. If data is invalid, user will not pass authorisation check.
func FromTokenString ¶
func FromTokenString(token string) (TelegramUserData, error)
FromTokenString parse a TelegramUserData struct from a token string.
The token string is expected to be in the format:
{tg_id}{sep}{first_name}{sep}{last_name}{sep}{username}{sep}{photo_url}{sep}{auth_date}{sep}{hash}
Where {sep} is the TokenSeparator constant.
func FromURL ¶
func FromURL(r *http.Request) (TelegramUserData, error)
FromURL TelegramUserData from query of request
It doesn't check is data valid, all invalid/empty fields will be ignored. If data is invalid, user will not pass authorisation check.
func (*TelegramUserData) GenerateHash ¶
func (u *TelegramUserData) GenerateHash(token string) string
Generate hash from TelegramUserData.
Use this for send TelegramUserData not from telegram widget. Telegram bots for example.
func (*TelegramUserData) IsExpiredData ¶
func (u *TelegramUserData) IsExpiredData(ttl time.Duration) bool
IsExpiredDate Check ttl of telegram data. Return true if data is expired.
func (*TelegramUserData) IsTelegramAuthorization ¶
func (u *TelegramUserData) IsTelegramAuthorization(token string) bool
IsTelegramAuthorization
https://core.telegram.org/widgets/login#checking-authorization
func (*TelegramUserData) TokenString ¶
func (u *TelegramUserData) TokenString() string