mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-01 02:56:08 +01:00
Improve session handling.
This commit is contained in:
@@ -63,11 +63,7 @@ abstract class ControllerBase extends ScalatraFilter
|
|||||||
request.getRequestURI + (if(queryString != null) "?" + queryString else "")
|
request.getRequestURI + (if(queryString != null) "?" + queryString else "")
|
||||||
}
|
}
|
||||||
|
|
||||||
private def LoginAccount: Option[Account] =
|
private def LoginAccount: Option[Account] = session.getAs[Account]("LOGIN_ACCOUNT")
|
||||||
session.get("LOGIN_ACCOUNT") match {
|
|
||||||
case Some(x: Account) => Some(x)
|
|
||||||
case _ => None
|
|
||||||
}
|
|
||||||
|
|
||||||
def ajaxGet(path : String)(action : => Any) : Route =
|
def ajaxGet(path : String)(action : => Any) : Route =
|
||||||
super.get(path){
|
super.get(path){
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ trait DashboardControllerBase extends ControllerBase {
|
|||||||
val sessionKey = "dashboard/pulls"
|
val sessionKey = "dashboard/pulls"
|
||||||
val condition = session.putAndGet(sessionKey, {
|
val condition = session.putAndGet(sessionKey, {
|
||||||
if(request.hasQueryString) IssueSearchCondition(request)
|
if(request.hasQueryString) IssueSearchCondition(request)
|
||||||
else session.get(sessionKey).getOrElse(IssueSearchCondition()).asInstanceOf[IssueSearchCondition]
|
else session.getAs[IssueSearchCondition](sessionKey).getOrElse(IssueSearchCondition())
|
||||||
}.copy(repo = repository))
|
}.copy(repo = repository))
|
||||||
|
|
||||||
val userName = context.loginAccount.get.userName
|
val userName = context.loginAccount.get.userName
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ trait IssuesControllerBase extends ControllerBase {
|
|||||||
// retrieve search condition
|
// retrieve search condition
|
||||||
val condition = session.putAndGet(sessionKey,
|
val condition = session.putAndGet(sessionKey,
|
||||||
if(request.hasQueryString) IssueSearchCondition(request)
|
if(request.hasQueryString) IssueSearchCondition(request)
|
||||||
else session.get(sessionKey).getOrElse(IssueSearchCondition()).asInstanceOf[IssueSearchCondition]
|
else session.getAs[IssueSearchCondition](sessionKey).getOrElse(IssueSearchCondition())
|
||||||
)
|
)
|
||||||
|
|
||||||
issues.html.list(
|
issues.html.list(
|
||||||
|
|||||||
@@ -374,7 +374,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
// retrieve search condition
|
// retrieve search condition
|
||||||
val condition = session.putAndGet(sessionKey,
|
val condition = session.putAndGet(sessionKey,
|
||||||
if(request.hasQueryString) IssueSearchCondition(request)
|
if(request.hasQueryString) IssueSearchCondition(request)
|
||||||
else session.get(sessionKey).getOrElse(IssueSearchCondition()).asInstanceOf[IssueSearchCondition]
|
else session.getAs[IssueSearchCondition](sessionKey).getOrElse(IssueSearchCondition())
|
||||||
)
|
)
|
||||||
|
|
||||||
pulls.html.list(
|
pulls.html.list(
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package app
|
|||||||
|
|
||||||
import service._
|
import service._
|
||||||
import jp.sf.amateras.scalatra.forms._
|
import jp.sf.amateras.scalatra.forms._
|
||||||
|
import util.Implicits._
|
||||||
|
|
||||||
class SignInController extends SignInControllerBase with SystemSettingsService with AccountService
|
class SignInController extends SignInControllerBase with SystemSettingsService with AccountService
|
||||||
|
|
||||||
@@ -41,8 +42,7 @@ trait SignInControllerBase extends ControllerBase { self: SystemSettingsService
|
|||||||
session.setAttribute("LOGIN_ACCOUNT", account)
|
session.setAttribute("LOGIN_ACCOUNT", account)
|
||||||
updateLastLoginDate(account.userName)
|
updateLastLoginDate(account.userName)
|
||||||
|
|
||||||
session.get("REDIRECT").map { case redirectUrl: String =>
|
session.getAndRemove[String]("REDIRECT").map { redirectUrl =>
|
||||||
session.removeAttribute("REDIRECT")
|
|
||||||
if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){
|
if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){
|
||||||
redirect("/")
|
redirect("/")
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -54,10 +54,19 @@ object Implicits {
|
|||||||
}
|
}
|
||||||
|
|
||||||
implicit class RichSession(session: HttpSession){
|
implicit class RichSession(session: HttpSession){
|
||||||
|
|
||||||
def putAndGet[T](key: String, value: T): T = {
|
def putAndGet[T](key: String, value: T): T = {
|
||||||
session.setAttribute(key, value)
|
session.setAttribute(key, value)
|
||||||
value
|
value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def getAndRemove[T](key: String): Option[T] = {
|
||||||
|
val value = session.getAttribute(key).asInstanceOf[T]
|
||||||
|
if(value == null){
|
||||||
|
session.removeAttribute(key)
|
||||||
|
}
|
||||||
|
Option(value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user