MCPcopy Index your code
hub / github.com/dnote/dnote / authWithToken

Function authWithToken

pkg/server/middleware/auth.go:32–58  ·  view source on GitHub ↗
(db *gorm.DB, r *http.Request, tokenType string)

Source from the content-addressed store, hash-verified

30)
31
32func authWithToken(db *gorm.DB, r *http.Request, tokenType string) (database.User, database.Token, bool, error) {
33 var user database.User
34 var token database.Token
35
36 query := r.URL.Query()
37 tokenValue := query.Get("token")
38 if tokenValue == "" {
39 return user, token, false, nil
40 }
41
42 err := db.Where("value = ? AND type = ?", tokenValue, tokenType).First(&token).Error
43 if errors.Is(err, gorm.ErrRecordNotFound) {
44 return user, token, false, nil
45 } else if err != nil {
46 return user, token, false, pkgErrors.Wrap(err, "finding token")
47 }
48
49 if token.UsedAt != nil && time.Since(*token.UsedAt).Minutes() > 10 {
50 return user, token, false, nil
51 }
52
53 if err := db.Where("id = ?", token.UserID).First(&user).Error; err != nil {
54 return user, token, false, pkgErrors.Wrap(err, "finding user")
55 }
56
57 return user, token, true, nil
58}
59
60// AuthParams is the params for the authentication middleware
61type AuthParams struct {

Callers 1

TokenAuthFunction · 0.85

Calls 1

QueryMethod · 0.65

Tested by

no test coverage detected