You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

session.go 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package auth
  4. import (
  5. "net/http"
  6. "code.gitea.io/gitea/models/db"
  7. user_model "code.gitea.io/gitea/models/user"
  8. "code.gitea.io/gitea/modules/log"
  9. )
  10. // Ensure the struct implements the interface.
  11. var (
  12. _ Method = &Session{}
  13. _ Named = &Session{}
  14. )
  15. // Session checks if there is a user uid stored in the session and returns the user
  16. // object for that uid.
  17. type Session struct{}
  18. // Name represents the name of auth method
  19. func (s *Session) Name() string {
  20. return "session"
  21. }
  22. // Verify checks if there is a user uid stored in the session and returns the user
  23. // object for that uid.
  24. // Returns nil if there is no user uid stored in the session.
  25. func (s *Session) Verify(req *http.Request, w http.ResponseWriter, store DataStore, sess SessionStore) (*user_model.User, error) {
  26. user := SessionUser(sess)
  27. if user != nil {
  28. return user, nil
  29. }
  30. return nil, nil
  31. }
  32. // SessionUser returns the user object corresponding to the "uid" session variable.
  33. func SessionUser(sess SessionStore) *user_model.User {
  34. if sess == nil {
  35. return nil
  36. }
  37. // Get user ID
  38. uid := sess.Get("uid")
  39. if uid == nil {
  40. return nil
  41. }
  42. log.Trace("Session Authorization: Found user[%d]", uid)
  43. id, ok := uid.(int64)
  44. if !ok {
  45. return nil
  46. }
  47. // Get user object
  48. user, err := user_model.GetUserByID(db.DefaultContext, id)
  49. if err != nil {
  50. if !user_model.IsErrUserNotExist(err) {
  51. log.Error("GetUserById: %v", err)
  52. }
  53. return nil
  54. }
  55. log.Trace("Session Authorization: Logged in user %-v", user)
  56. return user
  57. }