Files
photoprism/internal/commands/users.go
2025-09-18 14:30:19 +02:00

122 lines
3.1 KiB
Go

package commands
import (
"fmt"
"github.com/urfave/cli/v2"
"github.com/photoprism/photoprism/internal/auth/acl"
"github.com/photoprism/photoprism/pkg/authn"
)
// Usage hints for the user management subcommands.
const (
UserNameUsage = "full `NAME` for display in the interface"
UserEmailUsage = "unique `EMAIL` address of the user"
UserPasswordUsage = "`PASSWORD` for local authentication (8-72 characters)"
UserAuthUsage = "authentication `PROVIDER` (default, local, oidc or none)"
UserAuthIDUsage = "authentication `ID`, e.g. Subject ID or Distinguished Name (DN)"
UserAdminUsage = "makes user super admin with full access"
UserNoLoginUsage = "disables login on the web interface"
UserWebDAVUsage = "allows to sync files via WebDAV"
UserDisable2FA = "deactivates two-factor authentication"
)
var (
UserRoleUsage = fmt.Sprintf("user account `ROLE`, e.g. %s", acl.UserRoles.CliUsageString())
)
// UsersCommands configures the user management subcommands.
var UsersCommands = &cli.Command{
Name: "users",
Aliases: []string{"user"},
Usage: "User management subcommands",
Subcommands: []*cli.Command{
UsersListCommand,
UsersLegacyCommand,
UsersAddCommand,
UsersShowCommand,
UsersModCommand,
UsersRemoveCommand,
UsersResetCommand,
},
}
// UserFlags specifies the add and modify user command flags.
var UserFlags = []cli.Flag{
&cli.StringFlag{
Name: "name",
Aliases: []string{"n"},
Usage: UserNameUsage,
},
&cli.StringFlag{
Name: "email",
Aliases: []string{"m"},
Usage: UserEmailUsage,
},
&cli.StringFlag{
Name: "password",
Aliases: []string{"p"},
Usage: UserPasswordUsage,
},
&cli.StringFlag{
Name: "role",
Aliases: []string{"r"},
Usage: UserRoleUsage,
Value: acl.RoleAdmin.String(),
},
&cli.StringFlag{
Name: "auth",
Aliases: []string{"A"},
Usage: UserAuthUsage,
Value: authn.ProviderDefault.String(),
},
&cli.StringFlag{
Name: "auth-id",
Usage: UserAuthIDUsage,
Value: "",
},
&cli.BoolFlag{
Name: "superadmin",
Aliases: []string{"s"},
Usage: UserAdminUsage,
},
&cli.BoolFlag{
Name: "no-login",
Aliases: []string{"l"},
Usage: UserNoLoginUsage,
},
&cli.BoolFlag{
Name: "webdav",
Aliases: []string{"w"},
Usage: UserWebDAVUsage,
},
}
// UserTokensFlag is a CLI flag for showing the security tokens in reports.
var UserTokensFlag = &cli.BoolFlag{
Name: "tokens",
Usage: "show user preview and download tokens",
}
// UsersLoginFlag is a CLI flag for showing the last login timestamp in reports.
var UsersLoginFlag = &cli.BoolFlag{
Name: "login",
Aliases: []string{"l"},
Usage: "shows date and time of last login",
}
// UsersCreatedFlag is a CLI flag for showing the account creation timestamp in reports.
var UsersCreatedFlag = &cli.BoolFlag{
Name: "created",
Aliases: []string{"a"},
Usage: "shows account creation timestamp",
}
// UsersDeletedFlag is a CLI flag for showing deleted user accounts in reports.
var UsersDeletedFlag = &cli.BoolFlag{
Name: "deleted",
Aliases: []string{"r"},
Usage: "shows deleted user accounts",
}