user

package
v0.0.0-...-3511abf Latest Latest
Warning

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

Go to latest
Published: Nov 2, 2023 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const PersonalGroupPostfix = "DeterminedPersonalGroup"

PersonalGroupPostfix is the system postfix appended to the username of all personal groups.

View Source
const SessionDuration = 7 * 24 * time.Hour

SessionDuration is how long a newly created session is valid.

Variables

AuthZProvider is the authz registry for `user` package.

Functions

func Add

func Add(
	ctx context.Context,
	user *model.User,
	ug *model.AgentUserGroup,
) (model.UserID, error)

Add creates a new user, adding it to the User & AgentUserGroup tables.

func ByExternalToken

func ByExternalToken(tokenText string,
	ext *model.ExternalSessions,
) (*model.User, *model.UserSession, error)

ByExternalToken returns a user session derived from an external authentication token.

func ByID

func ByID(ctx context.Context, userID model.UserID) (*model.FullUser, error)

ByID returns the full user for a given ID.

func ByToken

func ByToken(ctx context.Context, token string, ext *model.ExternalSessions) (
	*model.User, *model.UserSession, error,
)

ByToken returns a user session given an authentication token.

func ByUsername

func ByUsername(ctx context.Context, username string) (*model.User, error)

ByUsername looks up a user by name in the database.

func DeleteSessionByID

func DeleteSessionByID(ctx context.Context, sessionID model.SessionID) error

DeleteSessionByID deletes the user session with the given ID.

func DeleteSessionByToken

func DeleteSessionByToken(ctx context.Context, token string) error

DeleteSessionByToken deletes user session if found (externally managed sessions are not stored in the DB and will not be found).

func GetAgentUserGroup

func GetAgentUserGroup(
	ctx context.Context,
	userID model.UserID,
	workspaceID int,
) (*model.AgentUserGroup, error)

GetAgentUserGroup returns AgentUserGroup for a user + (optional) workspace.

func GetUserSetting

func GetUserSetting(ctx context.Context, userID model.UserID) ([]*userv1.UserWebSetting, error)

GetUserSetting gets user setting.

func InitService

func InitService(db *db.PgDB, system *actor.System, extConfig *model.ExternalSessions)

InitService creates the user service singleton.

func List

func List(ctx context.Context) (values []model.FullUser, err error)

List returns all of the users in the database.

func NewCookieFromToken

func NewCookieFromToken(token string) *http.Cookie

NewCookieFromToken creates a new cookie from the given token.

func ProfileImage

func ProfileImage(ctx context.Context, username string) (photo []byte, err error)

ProfileImage returns the profile picture associated with the user.

func RegisterAPIHandler

func RegisterAPIHandler(echo *echo.Echo, m *Service, middleware ...echo.MiddlewareFunc)

RegisterAPIHandler initializes and registers the API handlers for all command related features.

func ResetUserSetting

func ResetUserSetting(ctx context.Context, userID model.UserID) error

ResetUserSetting resets user setting.

func SetActive

func SetActive(
	ctx context.Context,
	updateIDs []model.UserID,
	activate bool,
) error

SetActive changes multiple users' activation status.

func StartSession

func StartSession(ctx context.Context, user *model.User) (string, error)

StartSession creates a row in the user_sessions table.

func Update

func Update(
	ctx context.Context,
	updated *model.User,
	toUpdate []string,
	ug *model.AgentUserGroup,
) error

Update updates an existing user. `toUpdate` names the fields to update.

func UpdateUserSetting

func UpdateUserSetting(ctx context.Context, settings []*model.UserWebSetting) error

UpdateUserSetting updates user setting.

func UpdateUsername

func UpdateUsername(ctx context.Context, userID *model.UserID, newUsername string) error

UpdateUsername updates an existing user's username.

Types

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service describes a user manager.

func GetService

func GetService() *Service

GetService returns a reference to the user service singleton.

func (*Service) ProcessAuthentication

func (s *Service) ProcessAuthentication(next echo.HandlerFunc) echo.HandlerFunc

ProcessAuthentication is a middleware processing function that attempts to authenticate incoming HTTP requests.

func (*Service) UserAndSessionFromRequest

func (s *Service) UserAndSessionFromRequest(
	r *http.Request,
) (*model.User, *model.UserSession, error)

UserAndSessionFromRequest gets the user and session corresponding to the given request.

type UserAuthZ

type UserAuthZ interface {

	// GET /api/v1/users/:user_id
	// Denying a user shouldn't return an error. Only a server error that needs to be
	// reported to the user should return an errr.
	CanGetUser(ctx context.Context, curUser, targetUser model.User) error

	// GET /users
	// GET /api/v1/users
	// FilterUserList normally shouldn't return an error. It should just remove
	// users that the requesting user shouldn't see. It returns an error directly without
	// indication it occurred during a filtering stage to bubble up a failure to the user.
	FilterUserList(ctx context.Context, curUser model.User, users []model.FullUser) (
		[]model.FullUser, error)

	// POST /user
	// POST /api/v1/users
	CanCreateUser(
		ctx context.Context, curUser, userToAdd model.User, agentUserGroup *model.AgentUserGroup,
	) error

	// PATCH /users/:username
	// POST /api/v1/users/:user_id/password
	CanSetUsersPassword(ctx context.Context, curUser, targetUser model.User) error
	// PATCH /users/:username
	CanSetUsersActive(ctx context.Context, curUser, targetUser model.User, toActiveVal bool) error
	// PATCH /users/:username
	CanSetUsersAdmin(ctx context.Context, curUser, targetUser model.User, toAdminVal bool) error
	// PATCH /users/:username
	CanSetUsersRemote(ctx context.Context, curUser model.User) error
	// PATCH /users/:username
	CanSetUsersAgentUserGroup(
		ctx context.Context, curUser, targetUser model.User, agentUserGroup model.AgentUserGroup,
	) error
	// PATCH /users/:username/username
	CanSetUsersUsername(ctx context.Context, curUser, targetUser model.User) error
	// PATCH /api/v1/users/:user_id
	CanSetUsersDisplayName(ctx context.Context, curUser, targetUser model.User) error

	// GET /users/:username/image
	CanGetUsersImage(ctx context.Context, curUser, targetUsername model.User) error

	// GET /api/v1/users/setting
	CanGetUsersOwnSettings(ctx context.Context, curUser model.User) error
	// POST /api/v1/users/setting
	CanCreateUsersOwnSetting(
		ctx context.Context, curUser model.User, settings []*model.UserWebSetting,
	) error
	// POST /api/v1/users/setting/reset
	CanResetUsersOwnSettings(ctx context.Context, curUser model.User) error
}

UserAuthZ describes authz methods for `user` package.

type UserAuthZBasic

type UserAuthZBasic struct{}

UserAuthZBasic is basic OSS controls.

func (*UserAuthZBasic) CanCreateUser

func (a *UserAuthZBasic) CanCreateUser(
	ctx context.Context, curUser, userToAdd model.User, agentUserGroup *model.AgentUserGroup,
) error

CanCreateUser returns an error if the user is not an admin.

func (*UserAuthZBasic) CanCreateUsersOwnSetting

func (a *UserAuthZBasic) CanCreateUsersOwnSetting(
	ctx context.Context, curUser model.User, settings []*model.UserWebSetting,
) error

CanCreateUsersOwnSetting always returns nil.

func (*UserAuthZBasic) CanGetUser

func (a *UserAuthZBasic) CanGetUser(
	ctx context.Context, curUser, targetUser model.User,
) error

CanGetUser always returns nil.

func (*UserAuthZBasic) CanGetUsersImage

func (a *UserAuthZBasic) CanGetUsersImage(
	ctx context.Context, curUser, targetUser model.User,
) error

CanGetUsersImage always returns nil.

func (*UserAuthZBasic) CanGetUsersOwnSettings

func (a *UserAuthZBasic) CanGetUsersOwnSettings(ctx context.Context, curUser model.User) error

CanGetUsersOwnSettings always returns nil.

func (*UserAuthZBasic) CanResetUsersOwnSettings

func (a *UserAuthZBasic) CanResetUsersOwnSettings(ctx context.Context, curUser model.User) error

CanResetUsersOwnSettings always returns nil.

func (*UserAuthZBasic) CanSetUsersActive

func (a *UserAuthZBasic) CanSetUsersActive(
	ctx context.Context, curUser, targetUser model.User, toActiveVal bool,
) error

CanSetUsersActive returns an error if the user is not an admin.

func (*UserAuthZBasic) CanSetUsersAdmin

func (a *UserAuthZBasic) CanSetUsersAdmin(
	ctx context.Context, curUser, targetUser model.User, toAdminVal bool,
) error

CanSetUsersAdmin returns an error if the user is not an admin.

func (*UserAuthZBasic) CanSetUsersAgentUserGroup

func (a *UserAuthZBasic) CanSetUsersAgentUserGroup(
	ctx context.Context, curUser, targetUser model.User, agentUserGroup model.AgentUserGroup,
) error

CanSetUsersAgentUserGroup returns an error if the user is not an admin.

func (*UserAuthZBasic) CanSetUsersDisplayName

func (a *UserAuthZBasic) CanSetUsersDisplayName(
	ctx context.Context, curUser, targetUser model.User,
) error

CanSetUsersDisplayName returns an error if the user is not an admin when trying to set another user's display name.

func (*UserAuthZBasic) CanSetUsersPassword

func (a *UserAuthZBasic) CanSetUsersPassword(
	ctx context.Context, curUser, targetUser model.User,
) error

CanSetUsersPassword returns an error if the user is not an admin when trying to set another user's password.

func (*UserAuthZBasic) CanSetUsersRemote

func (a *UserAuthZBasic) CanSetUsersRemote(ctx context.Context, curUser model.User) error

CanSetUsersRemote returns an error if the user is not an admin.

func (*UserAuthZBasic) CanSetUsersUsername

func (a *UserAuthZBasic) CanSetUsersUsername(
	ctx context.Context, curUser, targetUser model.User,
) error

CanSetUsersUsername returns an error if the user is not an admin.

func (*UserAuthZBasic) FilterUserList

func (a *UserAuthZBasic) FilterUserList(
	ctx context.Context, curUser model.User, users []model.FullUser,
) ([]model.FullUser, error)

FilterUserList always returns the input user list and does not filtering.

Jump to

Keyboard shortcuts

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