MCPcopy
hub / github.com/filebrowser/filebrowser / withUser

Function withUser

http/auth.go:85–111  ·  view source on GitHub ↗
(fn handleFunc)

Source from the content-addressed store, hash-verified

83}
84
85func withUser(fn handleFunc) handleFunc {
86 return func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
87 keyFunc := func(_ *jwt.Token) (interface{}, error) {
88 return d.settings.Key, nil
89 }
90
91 var tk authToken
92 p := jwt.NewParser(jwt.WithValidMethods([]string{jwt.SigningMethodHS256.Alg()}), jwt.WithExpirationRequired())
93 token, err := request.ParseFromRequest(r, &extractor{}, keyFunc, request.WithClaims(&tk), request.WithParser(p))
94 if (err != nil || !token.Valid) && !renewableErr(err, d) {
95 return http.StatusUnauthorized, nil
96 }
97
98 expiresSoon := tk.ExpiresAt != nil && time.Until(tk.ExpiresAt.Time) < time.Hour
99 updated := tk.IssuedAt != nil && tk.IssuedAt.Unix() < d.store.Users.LastUpdate(tk.User.ID)
100
101 if expiresSoon || updated {
102 w.Header().Add("X-Renew-Token", "true")
103 }
104
105 d.user, err = d.store.Users.Get(d.server.Root, d.server.FollowExternalSymlinks, tk.User.ID)
106 if err != nil {
107 return http.StatusInternalServerError, err
108 }
109 return fn(w, r, d)
110 }
111}
112
113func withAdmin(fn handleFunc) handleFunc {
114 return withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {

Callers 15

previewHandlerFunction · 0.85
commands.goFile · 0.85
withPermShareFunction · 0.85
withSelfOrAdminFunction · 0.85
tusPostHandlerFunction · 0.85
tusHeadHandlerFunction · 0.85
tusPatchHandlerFunction · 0.85
tusDeleteHandlerFunction · 0.85
withAdminFunction · 0.85
renewHandlerFunction · 0.85
search.goFile · 0.85
raw.goFile · 0.85

Calls 3

renewableErrFunction · 0.85
LastUpdateMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected