Documentation ¶
Index ¶
- Variables
- func AddUserMiddleware() router.Middleware
- func CheckPassword(u *User, password string) error
- func CreateAdminFromTerminal() error
- func GeneratePasswordResetToken(user *User) (string, error)
- 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 OnRegister(name string, fn func(*User) error)
- func RegisterForm(autologin, requireNames bool, inputClass, labelClass string) *forms.Form
- func ResetPassword(user *User, oldPassword, newPassword string) error
- func SetPassword(u *User, password string) error
- func SetUserActive(u *User) error
- func UnRegister(name string)
- func UserDoesNotExist(u *User) error
- func UserFromRequestPure(r *request.Request) request.User
- func UserToRequest(r *request.Request, user *User)
- 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
- type AuthQuerier
- type DBTX
- type EmailField
- func (i *EmailField) FormValues(v []string) 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) Scan(src interface{}) error
- func (i EmailField) Validate() error
- func (i EmailField) Value() (driver.Value, error)
- type Group
- func (g *Group) Delete() error
- func (p *Group) GetFromStringID(id string) (*Group, error)
- func (g *Group) GetGroupSelectLabel() string
- func (g *Group) GetPermissionSelectOptions() (thisOptions, otherOptions []interfaces.Option)
- func (u *Group) List(page, each_page int) ([]*Group, int64, error)
- func (g *Group) Save(creating bool) error
- func (g *Group) String() string
- func (p *Group) StringID() string
- type GroupPermission
- type PaginationParams
- type PasswordField
- func (i *PasswordField) FormValues(v []string) 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) Scan(src interface{}) error
- func (i PasswordField) Value() (driver.Value, error)
- type Permission
- 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) Delete() error
- func (p *Permission) GetFromStringID(id string) (*Permission, error)
- func (u *Permission) List(page, each_page int) ([]*Permission, int64, error)
- func (p *Permission) Save(creating bool) error
- func (p *Permission) String() string
- func (p *Permission) StringID() string
- type 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 Queries
- 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
- func CreateAdminUser(email, username, first_name, last_name, password string) (*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) Delete() error
- func (p *User) GetFromStringID(id string) (*User, error)
- func (u *User) GetGroupSelectLabel() string
- func (u *User) GetGroupSelectOptions() (thisOptions, otherOptions []interfaces.Option)
- func (u *User) HasPermissions(permissions ...string) bool
- func (u *User) IsAdmin() bool
- func (u *User) IsAuthenticated() bool
- func (u *User) List(page, each_page int) ([]*User, int64, error)
- func (u *User) LoginField() string
- func (u *User) Save(creating bool) error
- func (u *User) Scan(value interface{}) error
- func (u *User) SetLoginField(value string) error
- func (u *User) String() string
- func (p *User) StringID() string
- func (u *User) Value() (driver.Value, error)
- type UserGroup
- type UserPermissionParams
- type WithDB
Constants ¶
This section is empty.
Variables ¶
var ( AUTH_APP_NAME = "auth" LOGIN_URL string LOGOUT_URL string )
var ( SESSION_COOKIE_NAME = "session_id" DEFAULT_PASSWORD_VALIDATORS = validators.New( validators.PasswordStrength(8, 32, false), ) )
var ( TokenExpiration = 24 * time.Hour MessageTokenInvalid = "Invalid password reset token." MessageTokenExpired = "Password reset token has expired." )
var ( // Signals for users. SIGNAL_BEFORE_USER_CREATE = user_signal_pool.Get("user.before_create") // -> Send(auth.User) (Returned error unused!) SIGNAL_BEFORE_USER_UPDATE = user_signal_pool.Get("user.before_update") // -> Send(auth.User) (Returned error unused!) SIGNAL_AFTER_USER_CREATE = user_signal_pool.Get("user.after_create") // -> Send(auth.User) (Returned error unused!) SIGNAL_AFTER_USER_UPDATE = user_signal_pool.Get("user.after_update") // -> Send(auth.User) (Returned error unused!) // Signals for groups. SIGNAL_BEFORE_GROUP_CREATE = group_signal_pool.Get("group.before_create") // -> Send(auth.Group) (Returned error unused!) SIGNAL_BEFORE_GROUP_UPDATE = group_signal_pool.Get("group.before_update") // -> Send(auth.Group) (Returned error unused!) SIGNAL_AFTER_GROUP_CREATE = group_signal_pool.Get("group.after_create") // -> Send(auth.Group) (Returned error unused!) SIGNAL_AFTER_GROUP_UPDATE = group_signal_pool.Get("group.after_update") // -> Send(auth.Group) (Returned error unused!) // Signals for permissions. SIGNAL_BEFORE_PERMISSION_CREATE = permissions_signal_pool.Get("permission.before_create") // -> Send(auth.Permission) (Returned error unused!) SIGNAL_BEFORE_PERMISSION_UPDATE = permissions_signal_pool.Get("permission.before_update") // -> Send(auth.Permission) (Returned error unused!) SIGNAL_AFTER_PERMISSION_CREATE = permissions_signal_pool.Get("permission.after_create") // -> Send(auth.Permission) (Returned error unused!) SIGNAL_AFTER_PERMISSION_UPDATE = permissions_signal_pool.Get("permission.after_update") // -> Send(auth.Permission) (Returned error unused!) // Deletions only require the ID of the object. SIGNAL_BEFORE_USER_DELETE = id_signal_pool.Get("user.before_delete") // -> Send(int64) (Returned error unused!) SIGNAL_BEFORE_GROUP_DELETE = id_signal_pool.Get("group.before_delete") // -> Send(int64) (Returned error unused!) SIGNAL_BEFORE_PERMISSION_DELETE = id_signal_pool.Get("permission.before_delete") // -> Send(int64) (Returned error unused!) SIGNAL_AFTER_USER_DELETE = id_signal_pool.Get("user.after_delete") // -> Send(int64) (Returned error unused!) SIGNAL_AFTER_GROUP_DELETE = id_signal_pool.Get("group.after_delete") // -> Send(int64) (Returned error unused!) SIGNAL_AFTER_PERMISSION_DELETE = id_signal_pool.Get("permission.after_delete") // -> Send(int64) (Returned error unused!) )
var CHECKER = func(hashedPassword, password string) error { return bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password)) }
var CreateSuperUserCommand = &flag.Command{ Name: "createsuperuser", Description: `Create a super user for the application. This superuser can be used to log in to the admin panel. A superuser can also create other users, and set their superuser status.`, Handler: createSuperUserFunc, Default: false, }
var HASHER = func(b string) (string, error) { var bytes, err = bcrypt.GenerateFromPassword([]byte(b), bcrypt.DefaultCost) return string(bytes), err }
var IS_HASHED = func(hashedPassword string) bool { return isBcryptHash(string(hashedPassword)) }
This function likely cannot 100% guarantee that the password is hashed. It might be susceptible to false positives or meticulously crafted user input.
var (
USER_MODEL_LOGIN_FIELD string = "Username"
)
Functions ¶
func AddUserMiddleware ¶
func AddUserMiddleware() router.Middleware
Add a user to a request, if one exists in the session.
func CheckPassword ¶ added in v1.6.2
func CreateAdminFromTerminal ¶ added in v1.6.2
func CreateAdminFromTerminal() error
func GeneratePasswordResetToken ¶
Generate a password reset token for a user. This token can be used to get the user with VerifyPasswordResetToken. The token will expire after 24 hours. The token will also expire if the user's password is changed.
func LoginRequiredURLMiddleware ¶
func LoginRequiredURLMiddleware(redirectURL string) router.Middleware
Middleware which checks if the user is authenticated.
func LoginUnsafe ¶
Log the user in, without doing any of the validation.
This is useful for when you have already done the validation (After registering for example).
func LogoutRequiredURLMiddleware ¶
func LogoutRequiredURLMiddleware(redirectURL string) router.Middleware
Middleware which checks if the user is not authenticated.
func OnRegister ¶ added in v1.6.2
Register a function to run on register.
Default functions which are registered:
- "ValidEmail"
- "ValidUsername"
- "ValidFirstName"
- "ValidLastName"
- "ValidPassword"
- "UserDoesNotExist" (Checks for duplicates in the database by username or email.)
- "SetUserActive" (Sets IsActive to be true)
func RegisterForm ¶ added in v1.6.2
func ResetPassword ¶
ResetPassword resets a password for a given user, if the old password is correct. Only updates the password column in the database. This is a convenience method.
func SetPassword ¶ added in v1.6.2
func SetUserActive ¶ added in v1.6.2
func UnRegister ¶ added in v1.6.2
func UnRegister(name string)
Un-register a function to run on register.
func UserDoesNotExist ¶ added in v1.6.2
func UserToRequest ¶
Set the user inside of the request.
func UsernameFromEmail ¶ added in v1.6.2
Get a username from an email address.
func ValidEmail ¶ added in v1.6.2
func ValidFirstName ¶ added in v1.6.2
func ValidLastName ¶ added in v1.6.2
func ValidPassword ¶ added in v1.6.2
func ValidUsername ¶ added in v1.6.2
Types ¶
type AuthApp ¶ added in v1.6.2
type AuthApp struct { Queries AuthQuerier Cache *client.Cache Logger request.Logger }
var Auth *AuthApp
func Initialize ¶ added in v1.6.2
type AuthQuerier ¶ added in v1.6.2
type AuthQuerier interface { // Groups CountGroups(ctx context.Context) (int64, error) GetAllGroups(ctx context.Context) (*linkedlist.Doubly[Group], error) CreateGroup(ctx context.Context, arg *Group) error UpdateGroup(ctx context.Context, arg *Group) error DeleteGroup(ctx context.Context, id int64) error GetGroupByID(ctx context.Context, id int64) (*Group, error) GetGroupsWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[Group], error) GroupsNotInUser(ctx context.Context, userID int64) (*linkedlist.Doubly[Group], error) // Permissions CountPermissions(ctx context.Context) (int64, error) GetAllPermissions(ctx context.Context) (*linkedlist.Doubly[Permission], error) CreatePermission(ctx context.Context, arg *Permission) error UpdatePermission(ctx context.Context, arg *Permission) error DeletePermission(ctx context.Context, id int64) error GetPermissionByID(ctx context.Context, id int64) (*Permission, error) GetPermissionByName(ctx context.Context, name string) (Permission, error) GetPermissionsByUserID(ctx context.Context, userID int64) (*linkedlist.Doubly[Permission], error) GetPermissionsByUserIDAndPermissionNames(ctx context.Context, arg UserPermissionParams) (*linkedlist.Doubly[Permission], error) GetPermissionsWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[Permission], error) PermissionsNotInGroup(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) PermissionsNotInUser(ctx context.Context, userID int64) (*linkedlist.Doubly[Permission], error) GetPermissionsByGroupID(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) // Users CountUsers(ctx context.Context) (int64, error) GetAllUsers(ctx context.Context) (*linkedlist.Doubly[User], error) CreateUser(ctx context.Context, arg *User) error UpdateUser(ctx context.Context, arg *User) error DeleteUser(ctx context.Context, id int64) error GetUserByEmail(ctx context.Context, email string) (*User, error) GetUserByID(ctx context.Context, id int64) (*User, error) GetUserByUsername(ctx context.Context, username string) (*User, error) GetUsersByPermissionID(ctx context.Context, permissionID int64) (*linkedlist.Doubly[User], error) GetUsersWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[User], error) GetGroupsByUserID(ctx context.Context, userID int64) (*linkedlist.Doubly[Group], error) // m2m CheckUserHasPermissions(ctx context.Context, arg UserPermissionParams) (bool, error) AddPermissionToGroup(ctx context.Context, groupID, permissionID int64) error AddUserToGroup(ctx context.Context, userID, groupID int64) error OverrideUserGroups(ctx context.Context, userID int64, groupIDs []int64) error OverrideGroupPermissions(ctx context.Context, groupID int64, permissionIDs []int64) error ListPermissionsInGroup(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error) ListUsersInGroup(ctx context.Context, groupID int64) (*linkedlist.Doubly[User], error) RemovePermissionFromGroup(ctx context.Context, groupID, permissionID int64) error RemoveUserFromGroup(ctx context.Context, userID, groupID int64) error }
func NewQueries ¶ added in v1.6.2
func NewQueries(db DBTX) AuthQuerier
type EmailField ¶ added in v1.6.2
type EmailField fields.StringField
func (*EmailField) FormValues ¶ added in v1.6.2
func (i *EmailField) FormValues(v []string) error
func (EmailField) InputHTML ¶ added in v1.6.2
func (i EmailField) InputHTML(_ *request.Request, name string, tags tags.TagMap) interfaces.Element
func (EmailField) LabelHTML ¶ added in v1.6.2
func (i EmailField) LabelHTML(_ *request.Request, name string, display_text string, tags tags.TagMap) interfaces.Element
func (*EmailField) Scan ¶ added in v1.6.2
func (i *EmailField) Scan(src interface{}) error
func (EmailField) Validate ¶ added in v1.6.2
func (i EmailField) Validate() error
type Group ¶
type Group struct { ID int64 `admin-form:"readonly;disabled;omit_on_create;" gorm:"-" json:"id"` Name string `gorm:"-" json:"name"` Description fields.TextField `admin-form:"textarea;" gorm:"-" json:"description"` // Non-SQLC fields Permissions []Permission `admin-form:"-" gorm:"-" json:"permissions"` PermissionSelect fields.DoubleMultipleSelectField `admin-form:"-" gorm:"-" json:"permission_select"` Users []User `admin-form:"-" gorm:"-" json:"users"` }
func (*Group) GetFromStringID ¶ added in v1.6.2
func (*Group) GetGroupSelectLabel ¶ added in v1.6.2
func (*Group) GetPermissionSelectOptions ¶ added in v1.6.2
func (g *Group) GetPermissionSelectOptions() (thisOptions, otherOptions []interfaces.Option)
type GroupPermission ¶ added in v1.6.2
type PaginationParams ¶ added in v1.6.2
type PasswordField ¶ added in v1.6.2
type PasswordField string
func (*PasswordField) FormValues ¶ added in v1.6.2
func (i *PasswordField) FormValues(v []string) error
func (PasswordField) InputHTML ¶ added in v1.6.2
func (i PasswordField) InputHTML(_ *request.Request, name string, tags tags.TagMap) interfaces.Element
func (PasswordField) LabelHTML ¶ added in v1.6.2
func (i PasswordField) LabelHTML(_ *request.Request, name string, display_text string, tags tags.TagMap) interfaces.Element
func (*PasswordField) Scan ¶ added in v1.6.2
func (i *PasswordField) Scan(src interface{}) error
type Permission ¶
type Permission struct { ID int64 `admin-form:"readonly;disabled;omit_on_create;" gorm:"-" json:"id"` Name string `gorm:"-" json:"name"` Description fields.TextField `admin-form:"textarea;" gorm:"-" json:"description"` // Non-SQLC fields Groups []Group `gorm:"-" json:"groups"` Users []User `gorm:"-" json:"users"` }
func NewPermission ¶
func NewPermission(typ string, s any) *Permission
Return a new permission for a given object.
The permission name will be in the format of:
<typ>_<pkgPath>_<lowercase type name>
If the object is not in a package, the permission name will be in the format of:
<typ>_<lowercase type name>
func PermCreate ¶
func PermCreate(s any) *Permission
Retrieve the CREATE permission for a given object
func PermDelete ¶
func PermDelete(s any) *Permission
Retrieve the DELETE permission for a given object
func PermUpdate ¶
func PermUpdate(s any) *Permission
Retrieve the UPDATE permission for a given object
func PermView ¶
func PermView(s any) *Permission
Retrieve the VIEW/READ permission for a given object
func SuperPerm ¶
func SuperPerm() *Permission
func (*Permission) Delete ¶ added in v1.6.2
func (p *Permission) Delete() error
func (*Permission) GetFromStringID ¶ added in v1.6.2
func (p *Permission) GetFromStringID(id string) (*Permission, error)
func (*Permission) List ¶ added in v1.6.2
func (u *Permission) List(page, each_page int) ([]*Permission, int64, error)
func (*Permission) Save ¶
func (p *Permission) Save(creating bool) error
func (*Permission) String ¶
func (p *Permission) String() string
func (*Permission) StringID ¶ added in v1.6.2
func (p *Permission) StringID() string
type PermissionMap ¶
type PermissionMap map[string]*Permission
func NewPermissionMap ¶
func NewPermissionMap(s any) PermissionMap
func (PermissionMap) All ¶
func (pm PermissionMap) All() []*Permission
func (PermissionMap) Create ¶
func (pm PermissionMap) Create() *Permission
func (PermissionMap) Delete ¶
func (pm PermissionMap) Delete() *Permission
func (PermissionMap) Get ¶
func (pm PermissionMap) Get(name string) *Permission
func (PermissionMap) List ¶
func (pm PermissionMap) List() *Permission
func (PermissionMap) Update ¶
func (pm PermissionMap) Update() *Permission
func (PermissionMap) View ¶
func (pm PermissionMap) View() *Permission
type Queries ¶ added in v1.6.2
type Queries struct {
// contains filtered or unexported fields
}
func (*Queries) AddPermissionToGroup ¶ added in v1.6.2
func (*Queries) AddPermissionsToGroup ¶ added in v1.6.2
func (*Queries) AddUserToGroup ¶ added in v1.6.2
func (*Queries) AddUserToGroups ¶ added in v1.6.2
func (*Queries) CheckUserHasPermissions ¶ added in v1.6.2
func (*Queries) CountGroups ¶ added in v1.6.2
func (*Queries) CountPermissions ¶ added in v1.6.2
func (*Queries) CountUsers ¶ added in v1.6.2
func (*Queries) CreateGroup ¶ added in v1.6.2
func (*Queries) CreatePermission ¶ added in v1.6.2
func (q *Queries) CreatePermission(ctx context.Context, arg *Permission) error
func (*Queries) CreateUser ¶ added in v1.6.2
func (*Queries) DeleteGroup ¶ added in v1.6.2
func (*Queries) DeleteGroupPermissions ¶ added in v1.6.2
func (*Queries) DeletePermission ¶ added in v1.6.2
func (*Queries) DeleteUser ¶ added in v1.6.2
func (*Queries) DeleteUserGroups ¶ added in v1.6.2
func (*Queries) GetAllGroups ¶ added in v1.6.2
func (*Queries) GetAllPermissions ¶ added in v1.6.2
func (q *Queries) GetAllPermissions(ctx context.Context) (*linkedlist.Doubly[Permission], error)
func (*Queries) GetAllUsers ¶ added in v1.6.2
func (*Queries) GetGroupByID ¶ added in v1.6.2
func (*Queries) GetGroupsByUserID ¶ added in v1.6.2
func (*Queries) GetGroupsWithPagination ¶ added in v1.6.2
func (q *Queries) GetGroupsWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[Group], error)
func (*Queries) GetPermissionByID ¶ added in v1.6.2
func (*Queries) GetPermissionByName ¶ added in v1.6.2
func (*Queries) GetPermissionsByGroupID ¶ added in v1.6.2
func (q *Queries) GetPermissionsByGroupID(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error)
func (*Queries) GetPermissionsByUserID ¶ added in v1.6.2
func (q *Queries) GetPermissionsByUserID(ctx context.Context, userID int64) (*linkedlist.Doubly[Permission], error)
func (*Queries) GetPermissionsByUserIDAndPermissionNames ¶ added in v1.6.2
func (q *Queries) GetPermissionsByUserIDAndPermissionNames(ctx context.Context, arg UserPermissionParams) (*linkedlist.Doubly[Permission], error)
func (*Queries) GetPermissionsWithPagination ¶ added in v1.6.2
func (q *Queries) GetPermissionsWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[Permission], error)
func (*Queries) GetUserByEmail ¶ added in v1.6.2
func (*Queries) GetUserByID ¶ added in v1.6.2
func (*Queries) GetUserByUsername ¶ added in v1.6.2
func (*Queries) GetUsersByPermissionID ¶ added in v1.6.2
func (*Queries) GetUsersWithPagination ¶ added in v1.6.2
func (q *Queries) GetUsersWithPagination(ctx context.Context, arg PaginationParams) (*linkedlist.Doubly[User], error)
func (*Queries) GroupsNotInUser ¶ added in v1.6.2
func (*Queries) ListPermissionsInGroup ¶ added in v1.6.2
func (q *Queries) ListPermissionsInGroup(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error)
func (*Queries) ListUsersInGroup ¶ added in v1.6.2
func (*Queries) OverrideGroupPermissions ¶ added in v1.6.2
func (*Queries) OverrideUserGroups ¶ added in v1.6.2
func (*Queries) PermissionsNotInGroup ¶ added in v1.6.2
func (q *Queries) PermissionsNotInGroup(ctx context.Context, groupID int64) (*linkedlist.Doubly[Permission], error)
func (*Queries) PermissionsNotInUser ¶ added in v1.6.2
func (q *Queries) PermissionsNotInUser(ctx context.Context, userID int64) (*linkedlist.Doubly[Permission], error)
func (*Queries) RemovePermissionFromGroup ¶ added in v1.6.2
func (*Queries) RemoveUserFromGroup ¶ added in v1.6.2
func (*Queries) UpdateGroup ¶ added in v1.6.2
func (*Queries) UpdatePermission ¶ added in v1.6.2
func (q *Queries) UpdatePermission(ctx context.Context, arg *Permission) error
func (*Queries) UpdateUser ¶ added in v1.6.2
type User ¶
type User struct { ID int64 `admin-form:"readonly;disabled;omit_on_create;" gorm:"-" json:"id"` CreatedAt time.Time `gorm:"-" json:"created_at"` UpdatedAt time.Time `gorm:"-" json:"updated_at"` Email EmailField `gorm:"-" json:"email"` Username string `gorm:"-" json:"username"` Password PasswordField `gorm:"-" json:"password"` FirstName string `gorm:"-" json:"first_name"` LastName string `gorm:"-" json:"last_name"` IsAdministrator bool `gorm:"-" json:"is_administrator"` IsActive bool `gorm:"-" json:"is_active"` // Non-SQLC fields IsLoggedIn bool `json:"-" gorm:"-"` GroupSelect fields.DoubleMultipleSelectField `gorm:"-" json:"group_select"` UploadAnImage fields.FileField `gorm:"-" json:"image"` Groups []Group `json:"groups" gorm:"-"` Permissions []Permission `json:"permissions" gorm:"-"` }
func CreateAdminUser ¶
Create a super user This runs in a CLI to ask for input It will skip most of the validation.
func Login ¶
Log the user in and set the user inside of the request.
If the authentication was not successful, return the unauthenticated user, and an error.
Authentication for the login_column_name is case insensitive!
func TokenResetPassword ¶
Very similar to VerifyPasswordResetToken, but also changes the user's password. Only updates the password column in the database. This is a convenience method.
func UnAuthenticatedUser ¶
func UnAuthenticatedUser() *User
func VerifyPasswordResetToken ¶
Beware! This returns the authenticated user. You can use this to reset the user's password.
token = ... user, err := Manager.VerifyPasswordResetToken(token) if err == nil { user.ChangePassword("new password") }
func (*User) GetFromStringID ¶ added in v1.6.2
func (*User) GetGroupSelectLabel ¶ added in v1.6.2
func (*User) GetGroupSelectOptions ¶ added in v1.6.2
func (u *User) GetGroupSelectOptions() (thisOptions, otherOptions []interfaces.Option)
func (*User) HasPermissions ¶ added in v1.6.2
Validate if the user has the given permissions
It will not fetch any permissions from the database.
func (*User) IsAuthenticated ¶
func (*User) LoginField ¶
Get the value of the currently set login field.
func (*User) SetLoginField ¶
Set the value of the current field used to log a user in.
type UserPermissionParams ¶ added in v1.6.2
type WithDB ¶ added in v1.6.2
type WithDB struct { DB AuthQuerier CTX context.Context }