session.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package session // import "miniflux.app/ui/session"
  4. import (
  5. "miniflux.app/crypto"
  6. "miniflux.app/storage"
  7. )
  8. // Session handles session data.
  9. type Session struct {
  10. store *storage.Storage
  11. sessionID string
  12. }
  13. // NewOAuth2State generates a new OAuth2 state and stores the value into the database.
  14. func (s *Session) NewOAuth2State() string {
  15. state := crypto.GenerateRandomString(32)
  16. s.store.UpdateAppSessionField(s.sessionID, "oauth2_state", state)
  17. return state
  18. }
  19. // NewFlashMessage creates a new flash message.
  20. func (s *Session) NewFlashMessage(message string) {
  21. s.store.UpdateAppSessionField(s.sessionID, "flash_message", message)
  22. }
  23. // FlashMessage returns the current flash message if any.
  24. func (s *Session) FlashMessage(message string) string {
  25. if message != "" {
  26. s.store.UpdateAppSessionField(s.sessionID, "flash_message", "")
  27. }
  28. return message
  29. }
  30. // NewFlashErrorMessage creates a new flash error message.
  31. func (s *Session) NewFlashErrorMessage(message string) {
  32. s.store.UpdateAppSessionField(s.sessionID, "flash_error_message", message)
  33. }
  34. // FlashErrorMessage returns the last flash error message if any.
  35. func (s *Session) FlashErrorMessage(message string) string {
  36. if message != "" {
  37. s.store.UpdateAppSessionField(s.sessionID, "flash_error_message", "")
  38. }
  39. return message
  40. }
  41. // SetLanguage updates the language field in session.
  42. func (s *Session) SetLanguage(language string) {
  43. s.store.UpdateAppSessionField(s.sessionID, "language", language)
  44. }
  45. // SetTheme updates the theme field in session.
  46. func (s *Session) SetTheme(theme string) {
  47. s.store.UpdateAppSessionField(s.sessionID, "theme", theme)
  48. }
  49. // SetPocketRequestToken updates Pocket Request Token.
  50. func (s *Session) SetPocketRequestToken(requestToken string) {
  51. s.store.UpdateAppSessionField(s.sessionID, "pocket_request_token", requestToken)
  52. }
  53. // New returns a new session handler.
  54. func New(store *storage.Storage, sessionID string) *Session {
  55. return &Session{store, sessionID}
  56. }