Versions in this module Expand all Collapse all v1 v1.6.2 May 10, 2023 Changes in this version + var CHECKER = func(hashedPassword, password string) error + var DEFAULT_PASSWORD_VALIDATORS = validators.New(validators.PasswordStrength(8, 32, false)) + var HASHER = func(b string) (string, error) + var IS_HASHED = func(hashedPassword string) bool + var SIGNAL_AFTER_GROUP_CREATE = group_signal_pool.Get("group.after_create") + var SIGNAL_AFTER_GROUP_DELETE = id_signal_pool.Get("group.after_delete") + var SIGNAL_AFTER_GROUP_UPDATE = group_signal_pool.Get("group.after_update") + var SIGNAL_AFTER_PERMISSION_CREATE = permissions_signal_pool.Get("permission.after_create") + var SIGNAL_AFTER_PERMISSION_DELETE = id_signal_pool.Get("permission.after_delete") + var SIGNAL_AFTER_PERMISSION_UPDATE = permissions_signal_pool.Get("permission.after_update") + var SIGNAL_BEFORE_GROUP_CREATE = group_signal_pool.Get("group.before_create") + var SIGNAL_BEFORE_GROUP_DELETE = id_signal_pool.Get("group.before_delete") + var SIGNAL_BEFORE_GROUP_UPDATE = group_signal_pool.Get("group.before_update") + var SIGNAL_BEFORE_PERMISSION_CREATE = permissions_signal_pool.Get("permission.before_create") + var SIGNAL_BEFORE_PERMISSION_DELETE = id_signal_pool.Get("permission.before_delete") + var SIGNAL_BEFORE_PERMISSION_UPDATE = permissions_signal_pool.Get("permission.before_update") + func CheckPassword(u *User, password string) error + func CreateAdminFromTerminal() error + func OnRegister(name string, fn func(*User) error) + func RegisterForm(autologin, requireNames bool, inputClass, labelClass string) *forms.Form + func SetPassword(u *User, password string) error + func SetUserActive(u *User) error + func UnRegister(name string) + func UserDoesNotExist(u *User) error + func UsernameFromEmail(email string) string + func ValidEmail(u *User) error + func ValidFirstName(u *User) error + func ValidLastName(u *User) error + func ValidPassword(u *User) error + func ValidUsername(u *User) error + type AuthApp struct + Cache *client.Cache + Logger request.Logger + Queries AuthQuerier + var Auth *AuthApp + func Initialize(db DBTX) *AuthApp + type AuthQuerier interface + AddPermissionToGroup func(ctx context.Context, groupID, permissionID int64) error + AddUserToGroup func(ctx context.Context, userID, groupID int64) error + CheckUserHasPermissions func(ctx context.Context, arg UserPermissionParams) (bool, error) + CountGroups func(ctx context.Context) (int64, error) + CountPermissions func(ctx context.Context) (int64, error) + CountUsers func(ctx context.Context) (int64, error) + CreateGroup func(ctx context.Context, arg *Group) error + CreatePermission func(ctx context.Context, arg *Permission) error + CreateUser func(ctx context.Context, arg *User) error + DeleteGroup func(ctx context.Context, id int64) error + DeletePermission func(ctx context.Context, id int64) error + DeleteUser func(ctx context.Context, id int64) error + GetAllGroups func(ctx context.Context) (*linkedlist.Doubly[Group], error) + GetAllPermissions func(ctx context.Context) (*linkedlist.Doubly[Permission], error) + GetAllUsers func(ctx context.Context) (*linkedlist.Doubly[User], error) + GetGroupByID func(ctx context.Context, id int64) (*Group, error) + GetGroupsByUserID func(ctx context.Context, userID int64) (*linkedlist.Doubly[Group], error) + GetGroupsWithPagination func(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[Group], error) + GetPermissionByID func(ctx context.Context, id int64) (*Permission, error) + GetPermissionByName func(ctx context.Context, name string) (Permission, error) + GetPermissionsByGroupID func(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) + GetPermissionsByUserID func(ctx context.Context, userID int64) (*linkedlist.Doubly[Permission], error) + GetPermissionsByUserIDAndPermissionNames func(ctx context.Context, arg UserPermissionParams) (*linkedlist.Doubly[Permission], error) + GetPermissionsWithPagination func(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[Permission], error) + GetUserByEmail func(ctx context.Context, email string) (*User, error) + GetUserByID func(ctx context.Context, id int64) (*User, error) + GetUserByUsername func(ctx context.Context, username string) (*User, error) + GetUsersByPermissionID func(ctx context.Context, permissionID int64) (*linkedlist.Doubly[User], error) + GetUsersWithPagination func(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[User], error) + GroupsNotInUser func(ctx context.Context, userID int64) (*linkedlist.Doubly[Group], error) + ListPermissionsInGroup func(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) + ListUsersInGroup func(ctx context.Context, groupID int64) (*linkedlist.Doubly[User], error) + OverrideGroupPermissions func(ctx context.Context, groupID int64, permissionIDs []int64) error + OverrideUserGroups func(ctx context.Context, userID int64, groupIDs []int64) error + PermissionsNotInGroup func(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) + PermissionsNotInUser func(ctx context.Context, userID int64) (*linkedlist.Doubly[Permission], error) + RemovePermissionFromGroup func(ctx context.Context, groupID, permissionID int64) error + RemoveUserFromGroup func(ctx context.Context, userID, groupID int64) error + UpdateGroup func(ctx context.Context, arg *Group) error + UpdatePermission func(ctx context.Context, arg *Permission) error + UpdateUser func(ctx context.Context, arg *User) error + func NewQueries(db DBTX) AuthQuerier + type DBTX interface + ExecContext func(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext func(context.Context, string) (*sql.Stmt, error) + QueryContext func(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext func(context.Context, string, ...interface{}) *sql.Row + type EmailField fields.StringField + func (i *EmailField) FormValues(v []string) error + func (i *EmailField) Scan(src interface{}) error + func (i EmailField) InputHTML(_ *request.Request, name string, tags tags.TagMap) interfaces.Element + func (i EmailField) LabelHTML(_ *request.Request, name string, display_text string, tags tags.TagMap) interfaces.Element + func (i EmailField) Validate() error + func (i EmailField) Value() (driver.Value, error) type Group + ID int64 + PermissionSelect fields.DoubleMultipleSelectField + func (g *Group) GetGroupSelectLabel() string + func (g *Group) GetPermissionSelectOptions() (thisOptions, otherOptions []interfaces.Option) + func (p *Group) GetFromStringID(id string) (*Group, error) + func (p *Group) StringID() string + func (u *Group) List(page, each_page int) ([]*Group, int64, error) + type GroupPermission struct + GroupID int64 + PermissionID int64 + type PaginationParams struct + Limit int32 + Offset int32 + type PasswordField string + func (i *PasswordField) FormValues(v []string) error + func (i *PasswordField) Scan(src interface{}) error + func (i PasswordField) InputHTML(_ *request.Request, name string, tags tags.TagMap) interfaces.Element + func (i PasswordField) LabelHTML(_ *request.Request, name string, display_text string, tags tags.TagMap) interfaces.Element + func (i PasswordField) Value() (driver.Value, error) type Permission + ID int64 + Users []User + func (p *Permission) Delete() error + func (p *Permission) GetFromStringID(id string) (*Permission, error) + func (p *Permission) StringID() string + func (u *Permission) List(page, each_page int) ([]*Permission, int64, error) + type Queries struct + func (q *Queries) AddPermissionToGroup(ctx context.Context, groupID, permissionID int64) error + func (q *Queries) AddPermissionsToGroup(ctx context.Context, groupID int64, permissionIds []int64) error + func (q *Queries) AddUserToGroup(ctx context.Context, userID, groupID int64) error + func (q *Queries) AddUserToGroups(ctx context.Context, userID int64, groupIds []int64) error + func (q *Queries) CheckUserHasPermissions(ctx context.Context, arg UserPermissionParams) (bool, error) + func (q *Queries) CountGroups(ctx context.Context) (int64, error) + func (q *Queries) CountPermissions(ctx context.Context) (int64, error) + func (q *Queries) CountUsers(ctx context.Context) (int64, error) + func (q *Queries) CreateGroup(ctx context.Context, arg *Group) error + func (q *Queries) CreatePermission(ctx context.Context, arg *Permission) error + func (q *Queries) CreateUser(ctx context.Context, arg *User) error + func (q *Queries) DeleteGroup(ctx context.Context, id int64) error + func (q *Queries) DeleteGroupPermissions(ctx context.Context, groupID int64) error + func (q *Queries) DeletePermission(ctx context.Context, id int64) error + func (q *Queries) DeleteUser(ctx context.Context, id int64) error + func (q *Queries) DeleteUserGroups(ctx context.Context, userID int64) error + func (q *Queries) GetAllGroups(ctx context.Context) (*linkedlist.Doubly[Group], error) + func (q *Queries) GetAllPermissions(ctx context.Context) (*linkedlist.Doubly[Permission], error) + func (q *Queries) GetAllUsers(ctx context.Context) (*linkedlist.Doubly[User], error) + func (q *Queries) GetGroupByID(ctx context.Context, id int64) (*Group, error) + func (q *Queries) GetGroupsByUserID(ctx context.Context, userID int64) (*linkedlist.Doubly[Group], error) + func (q *Queries) GetGroupsWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[Group], error) + func (q *Queries) GetPermissionByID(ctx context.Context, id int64) (*Permission, error) + func (q *Queries) GetPermissionByName(ctx context.Context, name string) (Permission, error) + func (q *Queries) GetPermissionsByGroupID(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) + func (q *Queries) GetPermissionsByUserID(ctx context.Context, userID int64) (*linkedlist.Doubly[Permission], error) + func (q *Queries) GetPermissionsByUserIDAndPermissionNames(ctx context.Context, arg UserPermissionParams) (*linkedlist.Doubly[Permission], error) + func (q *Queries) GetPermissionsWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[Permission], error) + func (q *Queries) GetUserByEmail(ctx context.Context, email string) (*User, error) + func (q *Queries) GetUserByID(ctx context.Context, id int64) (*User, error) + func (q *Queries) GetUserByUsername(ctx context.Context, username string) (*User, error) + func (q *Queries) GetUsersByPermissionID(ctx context.Context, permissionID int64) (*linkedlist.Doubly[User], error) + func (q *Queries) GetUsersWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[User], error) + func (q *Queries) GroupsNotInUser(ctx context.Context, userID int64) (*linkedlist.Doubly[Group], error) + func (q *Queries) ListPermissionsInGroup(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) + func (q *Queries) ListUsersInGroup(ctx context.Context, groupID int64) (*linkedlist.Doubly[User], error) + func (q *Queries) OverrideGroupPermissions(ctx context.Context, groupID int64, permissionIDs []int64) error + func (q *Queries) OverrideUserGroups(ctx context.Context, userID int64, groupIDs []int64) error + func (q *Queries) PermissionsNotInGroup(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) + func (q *Queries) PermissionsNotInUser(ctx context.Context, userID int64) (*linkedlist.Doubly[Permission], error) + func (q *Queries) RemovePermissionFromGroup(ctx context.Context, groupID, permID int64) error + func (q *Queries) RemoveUserFromGroup(ctx context.Context, userID, groupID int64) error + func (q *Queries) UpdateGroup(ctx context.Context, arg *Group) error + func (q *Queries) UpdatePermission(ctx context.Context, arg *Permission) error + func (q *Queries) UpdateUser(ctx context.Context, arg *User) error + func (q *Queries) WithTx(tx *sql.Tx) *Queries type User + CreatedAt time.Time + GroupSelect fields.DoubleMultipleSelectField + ID int64 + Permissions []Permission + UpdatedAt time.Time + UploadAnImage fields.FileField + func (p *User) GetFromStringID(id string) (*User, error) + func (p *User) StringID() string + func (u *User) GetGroupSelectLabel() string + func (u *User) GetGroupSelectOptions() (thisOptions, otherOptions []interfaces.Option) + func (u *User) HasPermissions(permissions ...string) bool + func (u *User) List(page, each_page int) ([]*User, int64, error) + func (u *User) Save(creating bool) error + func (u *User) Scan(value interface{}) error + func (u *User) Value() (driver.Value, error) + type UserGroup struct + GroupID int64 + UserID int64 + type UserPermissionParams struct + Permissionnames []string + UserID int64 + type WithDB struct + CTX context.Context + DB AuthQuerier v1.0.6 Apr 24, 2023 Changes in this version + var CreateSuperUserCommand = &flag.Command v1.0.0 Mar 18, 2023 Changes in this version + var AUTH_APP_NAME string = "Authentication" + var DB_KEY db.DATABASE_KEY = "auth" + var DEFAULT_USER_GROUP_NAMES = []string + var GROUP_MODEL_NAME string = "Groups" + var LOGIN_URL string + var LOGOUT_URL string + var LoginRequiredMiddleware = LoginRequiredURLMiddleware(LOGIN_URL) + var LogoutRequiredMiddleware = LogoutRequiredURLMiddleware(LOGIN_URL) + var MessageTokenExpired = "Password reset token has expired." + var MessageTokenInvalid = "Invalid password reset token." + var PERMISSION_MODEL_NAME string = "Permissions" + var SESSION_COOKIE_NAME string = "session_id" + var SIGNAL_AFTER_USER_CREATE = user_signal_pool.Get("user.after_create") + var SIGNAL_AFTER_USER_DELETE = user_signal_pool.Get("user.after_delete") + var SIGNAL_AFTER_USER_SAVE = user_signal_pool.Get("user.after_save") + var SIGNAL_AFTER_USER_UPDATE = user_signal_pool.Get("user.after_update") + var SIGNAL_BEFORE_USER_CREATE = user_signal_pool.Get("user.before_create") + var SIGNAL_BEFORE_USER_DELETE = user_signal_pool.Get("user.before_delete") + var SIGNAL_BEFORE_USER_SAVE = user_signal_pool.Get("user.before_save") + var SIGNAL_BEFORE_USER_UPDATE = user_signal_pool.Get("user.before_update") + var SIGNAL_LOGIN_FAILED = signal_pool.Get("auth.login_failed") + var SIGNAL_USER_LOGGED_IN = user_signal_pool.Get("auth.logged_in") + var SIGNAL_USER_LOGGED_OUT = user_signal_pool.Get("auth.logged_out") + var TokenExpiration = 24 * time.Hour + var USER_ABSOLUTE_URL_FUNC func(*User) string + var USER_MODEL_LOGIN_FIELD string = "Username" + var USER_MODEL_NAME string = "Users" + func AddUserMiddleware() router.Middleware + func BcryptCompare(hash, s string) error + func BcryptHash(s string) (string, error) + func CreateSuperUserFlag() error + func GeneratePasswordResetToken(user *User) (string, error) + func HasGroup(user *User, groupName string) bool + func HasPerms(user *User, permissions ...*Permission) bool + func Init(pool db.Pool[*gorm.DB]) + func LoginForm(inputClass, labelClass string) *forms.Form + func LoginRequiredURLMiddleware(redirectURL string) router.Middleware + func LoginUnsafe(r *request.Request, user *User) + func Logout(r *request.Request) error + func LogoutRequiredURLMiddleware(redirectURL string) router.Middleware + func PermsMiddleware(redirectURL string, permissions ...*Permission) router.Middleware + func RegisterGroups(groups ...*Group) error + func ResetPassword(user *User, oldPassword, newPassword string) error + func UserFromRequestPure(r *request.Request) request.User + func UserToRequest(r *request.Request, user *User) + type Group struct + Description string + Name string + Permissions []*Permission + Users []*User + func (g *Group) AppName() string + func (g *Group) BeforeCreate(tx *gorm.DB) error + func (g *Group) BeforeSave(tx *gorm.DB) error + func (g *Group) Delete(db *gorm.DB) error + func (g *Group) HasPerms(db *gorm.DB, permissions ...*Permission) bool + func (g *Group) NameOf() string + func (g *Group) Save(db *gorm.DB) error + func (g *Group) String() string + type Permission struct + Description string + Groups []*Group + Name string + func NewPermission(typ string, s any) *Permission + func PermAll(s any) []*Permission + func PermChain(permissions ...any) []*Permission + func PermCreate(s any) *Permission + func PermDelete(s any) *Permission + func PermList(s any) *Permission + func PermUpdate(s any) *Permission + func PermView(s any) *Permission + func SuperPerm() *Permission + func (p *Permission) AppName() string + func (p *Permission) NameOf() string + func (p *Permission) Save(db *gorm.DB) error + func (p *Permission) String() string + type PermissionMap map[string]*Permission + func NewPermissionMap(s any) PermissionMap + func (pm PermissionMap) All() []*Permission + func (pm PermissionMap) Create() *Permission + func (pm PermissionMap) Delete() *Permission + func (pm PermissionMap) Get(name string) *Permission + func (pm PermissionMap) List() *Permission + func (pm PermissionMap) Update() *Permission + func (pm PermissionMap) View() *Permission + type User struct + Email string + FirstName string + Groups []*Group + IsActive bool + IsAdministrator bool + IsLoggedIn bool + LastName string + Password string + Username string + func CreateAdminUser(email, username, first_name, last_name, password string) (*User, error) + func GetUser(query any, args ...interface{}) (*User, error) + func GetUserByID(id interface{}) (*User, error) + func Login(r *request.Request, login, password string) (user *User, err error) + func NewUser(login string) *User + func Register(email, username, first_name, last_name, password string) (*User, error) + func TokenResetPassword(tokenString, newPassword string) (*User, error) + func UnAuthenticatedUser() *User + func UserFromRequest(r *request.Request) *User + func VerifyPasswordResetToken(tokenString string) (*User, error) + func (u *User) AbsoluteURL() string + func (u *User) AddGroup(db *gorm.DB, groupName string) error + func (u *User) AdminSearch(query string, tx *gorm.DB) *gorm.DB + func (u *User) AfterCreate(tx *gorm.DB) error + func (u *User) AfterDelete(tx *gorm.DB) error + func (u *User) AfterSave(tx *gorm.DB) error + func (u *User) AfterUpdate(tx *gorm.DB) error + func (u *User) AppName() string + func (u *User) BeforeCreate(tx *gorm.DB) error + func (u *User) BeforeDelete(tx *gorm.DB) error + func (u *User) BeforeSave(tx *gorm.DB) error + func (u *User) BeforeUpdate(tx *gorm.DB) error + func (u *User) ChangePassword(password string) error + func (u *User) CheckPassword(password string) error + func (u *User) Delete() error + func (u *User) HasGroup(groupNames ...string) bool + func (u *User) HasPerms(permissions ...*Permission) bool + func (u *User) HasStrPerms(p ...string) bool + func (u *User) IsAdmin() bool + func (u *User) IsAuthenticated() bool + func (u *User) LoginField() string + func (u *User) NameOf() string + func (u *User) Refresh() error + func (u *User) RemoveGroup(db *gorm.DB, groupName string) error + func (u *User) SetGroups(db *gorm.DB, groups ...*Group) error + func (u *User) SetLoginField(value string) error + func (u *User) SetPassword(password string) error + func (u *User) String() string + func (u *User) Update() error