Update to new goprogram version

This commit is contained in:
Tom Wiesing 2023-11-01 22:01:24 +01:00
parent 7bd9570bc0
commit 873fdcd5c2
No known key found for this signature in database
106 changed files with 478 additions and 825 deletions

View file

@ -21,7 +21,7 @@ import (
type UserPanel struct {
component.Base
Dependencies struct {
dependencies struct {
Auth *auth.Auth
Templating *templating.Templating
Policy *policy.Policy
@ -42,14 +42,14 @@ func (panel *UserPanel) Routes() component.Routes {
return component.Routes{
Prefix: "/user/",
CSRF: true,
Decorator: panel.Dependencies.Auth.Require(false, scopes.ScopeUserValid, nil),
Decorator: panel.dependencies.Auth.Require(false, scopes.ScopeUserValid, nil),
}
}
func (panel *UserPanel) Menu(r *http.Request) []component.MenuItem {
title := "Login"
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if user != nil && err == nil {
title = user.User.User
}
@ -137,7 +137,7 @@ func (panel *UserPanel) HandleRoute(ctx context.Context, route string) (http.Han
}
// ensure that the user is logged in!
return panel.Dependencies.Auth.Protect(router, false, scopes.ScopeUserValid, nil), nil
return panel.dependencies.Auth.Protect(router, false, scopes.ScopeUserValid, nil), nil
}
type userFormContext struct {
@ -158,7 +158,7 @@ func (panel *UserPanel) UserFormContext(tpl *templating.Template[userFormContext
return func(ctx httpx.FormContext, r *http.Request) any {
uctx := userFormContext{FormContext: ctx}
if user, err := panel.Dependencies.Auth.UserOfSession(r); err == nil {
if user, err := panel.dependencies.Auth.UserOfSession(r); err == nil {
uctx.User = &user.User
}
return tpl.Context(r, uctx, funcs...)

View file

@ -32,7 +32,7 @@ var (
)
func (panel *UserPanel) routePassword(ctx context.Context) http.Handler {
tpl := passwordTemplate.Prepare(panel.Dependencies.Templating)
tpl := passwordTemplate.Prepare(panel.dependencies.Templating)
return &httpx.Form[struct{}]{
Fields: []field.Field{
@ -53,7 +53,7 @@ func (panel *UserPanel) routePassword(ctx context.Context) http.Handler {
return struct{}{}, errPasswordsNotIdentical
}
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if err != nil {
return struct{}{}, err
}

View file

@ -46,7 +46,7 @@ type SSHTemplateContext struct {
func (panel *UserPanel) sshRoute(ctx context.Context) http.Handler {
tpl := sshTemplate.Prepare(
panel.Dependencies.Templating,
panel.dependencies.Templating,
templating.Crumbs(
menuUser,
menuSSH,
@ -57,7 +57,7 @@ func (panel *UserPanel) sshRoute(ctx context.Context) http.Handler {
)
return tpl.HTMLHandler(func(r *http.Request) (sc SSHTemplateContext, err error) {
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if err != nil {
return sc, err
}
@ -66,7 +66,7 @@ func (panel *UserPanel) sshRoute(ctx context.Context) http.Handler {
sc.Port = panel.Config.Listen.SSHPort
// pick the first domain that the user has access to as an example
grants, err := panel.Dependencies.Policy.User(r.Context(), user.User.User)
grants, err := panel.dependencies.Policy.User(r.Context(), user.User.User)
if err != nil && len(grants) > 0 {
sc.Slug = grants[0].Slug
} else {
@ -74,12 +74,12 @@ func (panel *UserPanel) sshRoute(ctx context.Context) http.Handler {
}
sc.Hostname = panel.Config.HTTP.HostFromSlug(sc.Slug)
sc.Keys, err = panel.Dependencies.Keys.Keys(r.Context(), user.User.User)
sc.Keys, err = panel.dependencies.Keys.Keys(r.Context(), user.User.User)
if err != nil {
return sc, err
}
sc.Services = panel.Dependencies.SSH2.Intercepts()
sc.Services = panel.dependencies.SSH2.Intercepts()
return sc, nil
})
@ -100,7 +100,7 @@ func (panel *UserPanel) sshDeleteRoute(ctx context.Context) http.Handler {
httpx.HTMLInterceptor.Fallback.ServeHTTP(w, r)
return
}
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if err != nil {
logger.Err(err).Str("action", "delete ssh key").Msg("failed to get current user")
httpx.HTMLInterceptor.Fallback.ServeHTTP(w, r)
@ -114,7 +114,7 @@ func (panel *UserPanel) sshDeleteRoute(ctx context.Context) http.Handler {
return
}
if err := panel.Dependencies.Keys.Remove(r.Context(), user.User.User, key); err != nil {
if err := panel.dependencies.Keys.Remove(r.Context(), user.User.User, key); err != nil {
logger.Err(err).Str("action", "delete ssh key").Msg("failed to delete key")
httpx.HTMLInterceptor.Fallback.ServeHTTP(w, r)
return
@ -140,7 +140,7 @@ type addKeyResult struct {
func (panel *UserPanel) sshAddRoute(ctx context.Context) http.Handler {
tpl := sshAddTemplate.Prepare(
panel.Dependencies.Templating,
panel.dependencies.Templating,
templating.Crumbs(
menuUser,
menuSSH,
@ -159,7 +159,7 @@ func (panel *UserPanel) sshAddRoute(ctx context.Context) http.Handler {
RenderTemplateContext: templating.FormTemplateContext(tpl),
Validate: func(r *http.Request, values map[string]string) (ak addKeyResult, err error) {
ak.User, err = panel.Dependencies.Auth.UserOfSession(r)
ak.User, err = panel.dependencies.Auth.UserOfSession(r)
if err != nil || ak.User == nil {
return ak, errInvalidUser
}
@ -181,7 +181,7 @@ func (panel *UserPanel) sshAddRoute(ctx context.Context) http.Handler {
RenderSuccess: func(ak addKeyResult, values map[string]string, w http.ResponseWriter, r *http.Request) error {
// add the key to the user
if err := panel.Dependencies.Keys.Add(r.Context(), ak.User.User.User, ak.Comment, ak.Key); err != nil {
if err := panel.dependencies.Keys.Add(r.Context(), ak.User.User.User, ak.Comment, ak.Key); err != nil {
return errAddKey
}
// everything went fine, redirect the user back to the user page!

View file

@ -34,7 +34,7 @@ type TokenTemplateContext struct {
func (panel *UserPanel) tokensRoute(ctx context.Context) http.Handler {
tpl := tokensTemplate.Prepare(
panel.Dependencies.Templating,
panel.dependencies.Templating,
templating.Crumbs(
menuUser,
menuTokens,
@ -46,7 +46,7 @@ func (panel *UserPanel) tokensRoute(ctx context.Context) http.Handler {
return tpl.HTMLHandler(func(r *http.Request) (tc TokenTemplateContext, err error) {
// list the user
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if err != nil || user == nil {
return tc, err
}
@ -54,7 +54,7 @@ func (panel *UserPanel) tokensRoute(ctx context.Context) http.Handler {
tc.Domain = template.URL(panel.Config.HTTP.JoinPath().String())
// get the tokens
tc.Tokens, err = panel.Dependencies.Tokens.Tokens(r.Context(), user.User.User)
tc.Tokens, err = panel.dependencies.Tokens.Tokens(r.Context(), user.User.User)
return tc, err
})
}
@ -67,7 +67,7 @@ func (panel *UserPanel) tokensDeleteRoute(ctx context.Context) http.Handler {
httpx.HTMLInterceptor.Fallback.ServeHTTP(w, r)
return
}
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if err != nil {
logger.Err(err).Str("action", "delete token").Msg("failed to get current user")
httpx.HTMLInterceptor.Fallback.ServeHTTP(w, r)
@ -81,7 +81,7 @@ func (panel *UserPanel) tokensDeleteRoute(ctx context.Context) http.Handler {
return
}
if err := panel.Dependencies.Tokens.Remove(r.Context(), user.User.User, id); err != nil {
if err := panel.dependencies.Tokens.Remove(r.Context(), user.User.User, id); err != nil {
logger.Err(err).Str("action", "delete token").Msg("failed to delete token")
httpx.HTMLInterceptor.Fallback.ServeHTTP(w, r)
return
@ -122,7 +122,7 @@ type TokenCreateContext struct {
func (panel *UserPanel) tokensAddRoute(ctx context.Context) http.Handler {
tplForm := tokensAddTemplate.Prepare(
panel.Dependencies.Templating,
panel.dependencies.Templating,
templating.Crumbs(
menuUser,
menuTokens,
@ -131,7 +131,7 @@ func (panel *UserPanel) tokensAddRoute(ctx context.Context) http.Handler {
)
tplDone := tokenCreateTemplate.Prepare(
panel.Dependencies.Templating,
panel.dependencies.Templating,
templating.Crumbs(
menuUser,
menuTokens,
@ -149,7 +149,7 @@ func (panel *UserPanel) tokensAddRoute(ctx context.Context) http.Handler {
RenderTemplateContext: templating.FormTemplateContext(tplForm),
Validate: func(r *http.Request, values map[string]string) (at addTokenResult, err error) {
at.User, err = panel.Dependencies.Auth.UserOfSession(r)
at.User, err = panel.dependencies.Auth.UserOfSession(r)
if err != nil || at.User == nil {
return at, errInvalidUser
}
@ -166,7 +166,7 @@ func (panel *UserPanel) tokensAddRoute(ctx context.Context) http.Handler {
RenderSuccess: func(at addTokenResult, values map[string]string, w http.ResponseWriter, r *http.Request) error {
// add the key to the user
tok, err := panel.Dependencies.Tokens.Add(r.Context(), at.User.User.User, at.Description, at.Scopes)
tok, err := panel.dependencies.Tokens.Add(r.Context(), at.User.User.User, at.Description, at.Scopes)
if err != nil {
return err
}

View file

@ -24,7 +24,7 @@ var totpEnable = templating.Parse[userFormContext](
)
func (panel *UserPanel) routeTOTPEnable(ctx context.Context) http.Handler {
tpl := totpEnable.Prepare(panel.Dependencies.Templating)
tpl := totpEnable.Prepare(panel.dependencies.Templating)
return &httpx.Form[struct{}]{
Fields: []field.Field{
@ -33,7 +33,7 @@ func (panel *UserPanel) routeTOTPEnable(ctx context.Context) http.Handler {
FieldTemplate: field.PureCSSFieldTemplate,
SkipForm: func(r *http.Request) (data struct{}, skip bool) {
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
return struct{}{}, err == nil && user != nil && user.IsTOTPEnabled()
},
@ -43,7 +43,7 @@ func (panel *UserPanel) routeTOTPEnable(ctx context.Context) http.Handler {
Validate: func(r *http.Request, values map[string]string) (struct{}, error) {
password := values["password"]
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if err != nil {
return struct{}{}, err
}
@ -90,7 +90,7 @@ type totpEnrollContext struct {
func (panel *UserPanel) routeTOTPEnroll(ctx context.Context) http.Handler {
tpl := totpEnrollTemplate.Prepare(
panel.Dependencies.Templating,
panel.dependencies.Templating,
templating.Crumbs(
menuUser,
menuTOTPEnable,
@ -105,11 +105,11 @@ func (panel *UserPanel) routeTOTPEnroll(ctx context.Context) http.Handler {
FieldTemplate: field.PureCSSFieldTemplate,
SkipForm: func(r *http.Request) (data struct{}, skip bool) {
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
return struct{}{}, err == nil && user != nil && user.IsTOTPEnabled()
},
RenderTemplateContext: func(context httpx.FormContext, r *http.Request) any {
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
ctx := totpEnrollContext{
userFormContext: userFormContext{
@ -136,7 +136,7 @@ func (panel *UserPanel) routeTOTPEnroll(ctx context.Context) http.Handler {
Validate: func(r *http.Request, values map[string]string) (struct{}, error) {
password, otp := values["password"], values["otp"]
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if err != nil {
return struct{}{}, err
}
@ -174,7 +174,7 @@ var totpDisableTemplate = templating.Parse[userFormContext](
)
func (panel *UserPanel) routeTOTPDisable(ctx context.Context) http.Handler {
tpl := totpDisableTemplate.Prepare(panel.Dependencies.Templating)
tpl := totpDisableTemplate.Prepare(panel.dependencies.Templating)
return &httpx.Form[struct{}]{
Fields: []field.Field{
@ -184,7 +184,7 @@ func (panel *UserPanel) routeTOTPDisable(ctx context.Context) http.Handler {
FieldTemplate: field.PureCSSFieldTemplate,
SkipForm: func(r *http.Request) (data struct{}, skip bool) {
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
return struct{}{}, err == nil && user != nil && !user.IsTOTPEnabled()
},
RenderTemplate: tpl.Template(),
@ -193,7 +193,7 @@ func (panel *UserPanel) routeTOTPDisable(ctx context.Context) http.Handler {
Validate: func(r *http.Request, values map[string]string) (struct{}, error) {
password, otp := values["password"], values["otp"]
user, err := panel.Dependencies.Auth.UserOfSession(r)
user, err := panel.dependencies.Auth.UserOfSession(r)
if err != nil {
return struct{}{}, err
}

View file

@ -52,7 +52,7 @@ func (panel *UserPanel) routeUser(ctx context.Context) http.Handler {
}
tpl := userTemplate.Prepare(
panel.Dependencies.Templating,
panel.dependencies.Templating,
templating.Crumbs(
menuUser,
),
@ -61,12 +61,12 @@ func (panel *UserPanel) routeUser(ctx context.Context) http.Handler {
return tpl.HTMLHandlerWithFlags(func(r *http.Request) (uc userContext, funcs []templating.FlagFunc, err error) {
// find the user
uc.AuthUser, err = panel.Dependencies.Auth.UserOfSession(r)
uc.AuthUser, err = panel.dependencies.Auth.UserOfSession(r)
if err != nil || uc.AuthUser == nil {
return uc, nil, err
}
uc.ShowAdminURLs = panel.Dependencies.Auth.CheckScope("", scopes.ScopeUserAdmin, r) == nil
uc.ShowAdminURLs = panel.dependencies.Auth.CheckScope("", scopes.ScopeUserAdmin, r) == nil
// replace the totp action in the menu
var totpAction component.MenuItem
@ -81,7 +81,7 @@ func (panel *UserPanel) routeUser(ctx context.Context) http.Handler {
}
// find the grants
grants, err := panel.Dependencies.Policy.User(r.Context(), uc.AuthUser.User.User)
grants, err := panel.dependencies.Policy.User(r.Context(), uc.AuthUser.User.User)
if err != nil {
return uc, nil, err
}
@ -90,7 +90,7 @@ func (panel *UserPanel) routeUser(ctx context.Context) http.Handler {
for i, grant := range grants {
uc.Grants[i].Grant = grant
url, err := panel.Dependencies.Next.Next(r.Context(), grant.Slug, "/")
url, err := panel.dependencies.Next.Next(r.Context(), grant.Slug, "/")
if err != nil {
return uc, nil, err
}