From f49b42f70f902d4da1e0fa4080e99164b331b716 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sun, 29 Apr 2018 16:35:04 -0700 Subject: Use vanilla HTTP handlers (refactoring) --- ui/session/session.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 ui/session/session.go (limited to 'ui/session') diff --git a/ui/session/session.go b/ui/session/session.go new file mode 100644 index 0000000..fc25406 --- /dev/null +++ b/ui/session/session.go @@ -0,0 +1,62 @@ +// Copyright 2018 Frédéric Guillot. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +package session + +import ( + "github.com/miniflux/miniflux/crypto" + "github.com/miniflux/miniflux/http/context" + "github.com/miniflux/miniflux/storage" +) + +// Session handles session data. +type Session struct { + store *storage.Storage + ctx *context.Context +} + +// NewOAuth2State generates a new OAuth2 state and stores the value into the database. +func (s *Session) NewOAuth2State() string { + state := crypto.GenerateRandomString(32) + s.store.UpdateSessionField(s.ctx.SessionID(), "oauth2_state", state) + return state +} + +// NewFlashMessage creates a new flash message. +func (s *Session) NewFlashMessage(message string) { + s.store.UpdateSessionField(s.ctx.SessionID(), "flash_message", message) +} + +// FlashMessage returns the current flash message if any. +func (s *Session) FlashMessage() string { + message := s.ctx.FlashMessage() + if message != "" { + s.store.UpdateSessionField(s.ctx.SessionID(), "flash_message", "") + } + return message +} + +// NewFlashErrorMessage creates a new flash error message. +func (s *Session) NewFlashErrorMessage(message string) { + s.store.UpdateSessionField(s.ctx.SessionID(), "flash_error_message", message) +} + +// FlashErrorMessage returns the last flash error message if any. +func (s *Session) FlashErrorMessage() string { + message := s.ctx.FlashErrorMessage() + if message != "" { + s.store.UpdateSessionField(s.ctx.SessionID(), "flash_error_message", "") + } + return message +} + +// SetLanguage updates language field in session. +func (s *Session) SetLanguage(language string) { + s.store.UpdateSessionField(s.ctx.SessionID(), "language", language) +} + +// New returns a new session handler. +func New(store *storage.Storage, ctx *context.Context) *Session { + return &Session{store, ctx} +} -- cgit v1.2.3