mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-01 19:15:59 +01:00
Define session keys.
This commit is contained in:
@@ -3,7 +3,7 @@ package app
|
|||||||
import _root_.util.Directory._
|
import _root_.util.Directory._
|
||||||
import _root_.util.Implicits._
|
import _root_.util.Implicits._
|
||||||
import _root_.util.ControlUtil._
|
import _root_.util.ControlUtil._
|
||||||
import _root_.util.{FileUtil, Validations}
|
import _root_.util.{FileUtil, Validations, Keys}
|
||||||
import org.scalatra._
|
import org.scalatra._
|
||||||
import org.scalatra.json._
|
import org.scalatra.json._
|
||||||
import org.json4s._
|
import org.json4s._
|
||||||
@@ -34,7 +34,7 @@ abstract class ControllerBase extends ScalatraFilter
|
|||||||
val path = httpRequest.getRequestURI.substring(context.length)
|
val path = httpRequest.getRequestURI.substring(context.length)
|
||||||
|
|
||||||
if(path.startsWith("/console/")){
|
if(path.startsWith("/console/")){
|
||||||
val account = httpRequest.getSession.getAttribute("LOGIN_ACCOUNT").asInstanceOf[Account]
|
val account = httpRequest.getSession.getAttribute(Keys.Session.LoginAccount).asInstanceOf[Account]
|
||||||
if(account == null){
|
if(account == null){
|
||||||
// Redirect to login form
|
// Redirect to login form
|
||||||
httpResponse.sendRedirect(context + "/signin?" + path)
|
httpResponse.sendRedirect(context + "/signin?" + path)
|
||||||
@@ -63,7 +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] = session.getAs[Account]("LOGIN_ACCOUNT")
|
private def LoginAccount: Option[Account] = session.getAs[Account](Keys.Session.LoginAccount)
|
||||||
|
|
||||||
def ajaxGet(path : String)(action : => Any) : Route =
|
def ajaxGet(path : String)(action : => Any) : Route =
|
||||||
super.get(path){
|
super.get(path){
|
||||||
@@ -197,14 +197,10 @@ trait FileUploadControllerBase {
|
|||||||
// def removeTemporaryFile(fileId: String)(implicit session: HttpSession): Unit =
|
// def removeTemporaryFile(fileId: String)(implicit session: HttpSession): Unit =
|
||||||
// getTemporaryFile(fileId).delete()
|
// getTemporaryFile(fileId).delete()
|
||||||
|
|
||||||
def removeTemporaryFiles()(implicit session: HttpSession): Unit = FileUtils.deleteDirectory(TemporaryDir)
|
def removeTemporaryFiles()(implicit session: HttpSession): Unit =
|
||||||
|
FileUtils.deleteDirectory(TemporaryDir)
|
||||||
|
|
||||||
def getUploadedFilename(fileId: String)(implicit session: HttpSession): Option[String] =
|
def getUploadedFilename(fileId: String)(implicit session: HttpSession): Option[String] =
|
||||||
defining(Option(session.getAttribute("upload_" + fileId).asInstanceOf[String])){ filename =>
|
session.getAndRemove[String](Keys.Session.Upload(fileId))
|
||||||
if(filename.isDefined){
|
|
||||||
session.removeAttribute("upload_" + fileId)
|
|
||||||
}
|
|
||||||
filename
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import service._
|
import service._
|
||||||
import util.UsersAuthenticator
|
import util.{UsersAuthenticator, Keys}
|
||||||
import util.Implicits._
|
import util.Implicits._
|
||||||
|
|
||||||
class DashboardController extends DashboardControllerBase
|
class DashboardController extends DashboardControllerBase
|
||||||
@@ -43,10 +43,9 @@ trait DashboardControllerBase extends ControllerBase {
|
|||||||
import IssuesService._
|
import IssuesService._
|
||||||
|
|
||||||
// condition
|
// condition
|
||||||
val sessionKey = "dashboard/issues"
|
val condition = session.putAndGet(Keys.Session.DashboardIssues,
|
||||||
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](Keys.Session.DashboardIssues).getOrElse(IssueSearchCondition())
|
||||||
)
|
)
|
||||||
|
|
||||||
val userName = context.loginAccount.get.userName
|
val userName = context.loginAccount.get.userName
|
||||||
@@ -75,10 +74,9 @@ trait DashboardControllerBase extends ControllerBase {
|
|||||||
import PullRequestService._
|
import PullRequestService._
|
||||||
|
|
||||||
// condition
|
// condition
|
||||||
val sessionKey = "dashboard/pulls"
|
val condition = session.putAndGet(Keys.Session.DashboardPulls, {
|
||||||
val condition = session.putAndGet(sessionKey, {
|
|
||||||
if(request.hasQueryString) IssueSearchCondition(request)
|
if(request.hasQueryString) IssueSearchCondition(request)
|
||||||
else session.getAs[IssueSearchCondition](sessionKey).getOrElse(IssueSearchCondition())
|
else session.getAs[IssueSearchCondition](Keys.Session.DashboardPulls).getOrElse(IssueSearchCondition())
|
||||||
}.copy(repo = repository))
|
}.copy(repo = repository))
|
||||||
|
|
||||||
val userName = context.loginAccount.get.userName
|
val userName = context.loginAccount.get.userName
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import util.FileUtil
|
import _root_.util.{Keys, FileUtil}
|
||||||
import util.ControlUtil._
|
import util.ControlUtil._
|
||||||
import org.scalatra._
|
import org.scalatra._
|
||||||
import org.scalatra.servlet.{MultipartConfig, FileUploadSupport}
|
import org.scalatra.servlet.{MultipartConfig, FileUploadSupport}
|
||||||
@@ -21,7 +21,7 @@ class FileUploadController extends ScalatraServlet
|
|||||||
fileParams.get("file") match {
|
fileParams.get("file") match {
|
||||||
case Some(file) if(FileUtil.isImage(file.name)) => defining(generateFileId){ fileId =>
|
case Some(file) if(FileUtil.isImage(file.name)) => defining(generateFileId){ fileId =>
|
||||||
FileUtils.writeByteArrayToFile(getTemporaryFile(fileId), file.get)
|
FileUtils.writeByteArrayToFile(getTemporaryFile(fileId), file.get)
|
||||||
session += "upload_" + fileId -> file.name
|
session += Keys.Session.Upload(fileId) -> file.name
|
||||||
Ok(fileId)
|
Ok(fileId)
|
||||||
}
|
}
|
||||||
case None => BadRequest
|
case None => BadRequest
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import jp.sf.amateras.scalatra.forms._
|
|||||||
|
|
||||||
import service._
|
import service._
|
||||||
import IssuesService._
|
import IssuesService._
|
||||||
import util.{CollaboratorsAuthenticator, ReferrerAuthenticator, ReadableUsersAuthenticator, Notifier}
|
import util.{CollaboratorsAuthenticator, ReferrerAuthenticator, ReadableUsersAuthenticator, Notifier, Keys}
|
||||||
import util.Implicits._
|
import util.Implicits._
|
||||||
import util.ControlUtil._
|
import util.ControlUtil._
|
||||||
import org.scalatra.Ok
|
import org.scalatra.Ok
|
||||||
@@ -328,7 +328,7 @@ trait IssuesControllerBase extends ControllerBase {
|
|||||||
defining(repository.owner, repository.name){ case (owner, repoName) =>
|
defining(repository.owner, repository.name){ case (owner, repoName) =>
|
||||||
val filterUser = Map(filter -> params.getOrElse("userName", ""))
|
val filterUser = Map(filter -> params.getOrElse("userName", ""))
|
||||||
val page = IssueSearchCondition.page(request)
|
val page = IssueSearchCondition.page(request)
|
||||||
val sessionKey = s"${owner}/${repoName}/issues"
|
val sessionKey = Keys.Session.Issues(owner, repoName)
|
||||||
|
|
||||||
// retrieve search condition
|
// retrieve search condition
|
||||||
val condition = session.putAndGet(sessionKey,
|
val condition = session.putAndGet(sessionKey,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import util.{LockUtil, CollaboratorsAuthenticator, JGitUtil, ReferrerAuthenticator, Notifier}
|
import util.{LockUtil, CollaboratorsAuthenticator, JGitUtil, ReferrerAuthenticator, Notifier, Keys}
|
||||||
import util.Directory._
|
import util.Directory._
|
||||||
import util.Implicits._
|
import util.Implicits._
|
||||||
import util.ControlUtil._
|
import util.ControlUtil._
|
||||||
@@ -369,7 +369,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
defining(repository.owner, repository.name){ case (owner, repoName) =>
|
defining(repository.owner, repository.name){ case (owner, repoName) =>
|
||||||
val filterUser = userName.map { x => Map("created_by" -> x) } getOrElse Map("all" -> "")
|
val filterUser = userName.map { x => Map("created_by" -> x) } getOrElse Map("all" -> "")
|
||||||
val page = IssueSearchCondition.page(request)
|
val page = IssueSearchCondition.page(request)
|
||||||
val sessionKey = s"${owner}/${repoName}/pulls"
|
val sessionKey = Keys.Session.Pulls(owner, repoName)
|
||||||
|
|
||||||
// retrieve search condition
|
// retrieve search condition
|
||||||
val condition = session.putAndGet(sessionKey,
|
val condition = session.putAndGet(sessionKey,
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package app
|
|||||||
import service._
|
import service._
|
||||||
import jp.sf.amateras.scalatra.forms._
|
import jp.sf.amateras.scalatra.forms._
|
||||||
import util.Implicits._
|
import util.Implicits._
|
||||||
|
import util.Keys
|
||||||
|
|
||||||
class SignInController extends SignInControllerBase with SystemSettingsService with AccountService
|
class SignInController extends SignInControllerBase with SystemSettingsService with AccountService
|
||||||
|
|
||||||
@@ -18,7 +19,7 @@ trait SignInControllerBase extends ControllerBase { self: SystemSettingsService
|
|||||||
get("/signin"){
|
get("/signin"){
|
||||||
val redirect = params.get("redirect")
|
val redirect = params.get("redirect")
|
||||||
if(redirect.isDefined && redirect.get.startsWith("/")){
|
if(redirect.isDefined && redirect.get.startsWith("/")){
|
||||||
session.setAttribute("REDIRECT", redirect.get)
|
session.setAttribute(Keys.Session.Redirect, redirect.get)
|
||||||
}
|
}
|
||||||
html.signin(loadSystemSettings())
|
html.signin(loadSystemSettings())
|
||||||
}
|
}
|
||||||
@@ -39,10 +40,10 @@ trait SignInControllerBase extends ControllerBase { self: SystemSettingsService
|
|||||||
* Set account information into HttpSession and redirect.
|
* Set account information into HttpSession and redirect.
|
||||||
*/
|
*/
|
||||||
private def signin(account: model.Account) = {
|
private def signin(account: model.Account) = {
|
||||||
session.setAttribute("LOGIN_ACCOUNT", account)
|
session.setAttribute(Keys.Session.LoginAccount, account)
|
||||||
updateLastLoginDate(account.userName)
|
updateLastLoginDate(account.userName)
|
||||||
|
|
||||||
session.getAndRemove[String]("REDIRECT").map { redirectUrl =>
|
session.getAndRemove[String](Keys.Session.Redirect).map { redirectUrl =>
|
||||||
if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){
|
if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){
|
||||||
redirect("/")
|
redirect("/")
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
47
src/main/scala/util/Keys.scala
Normal file
47
src/main/scala/util/Keys.scala
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package util
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define key strings for request attributes, session attributes or flash attributes..
|
||||||
|
*/
|
||||||
|
object Keys {
|
||||||
|
|
||||||
|
object Session {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Session key for the logged in account information.
|
||||||
|
*/
|
||||||
|
val LoginAccount = "LOGIN_ACCOUNT"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Session key for the redirect URL.
|
||||||
|
*/
|
||||||
|
val Redirect = "REDIRECT"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Session key for the issue search condition in dashboard.
|
||||||
|
*/
|
||||||
|
val DashboardIssues = "dashboard/issues"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Session key for the pull request search condition in dashboard.
|
||||||
|
*/
|
||||||
|
val DashboardPulls = "dashboard/pulls"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate session key for the issue search condition.
|
||||||
|
*/
|
||||||
|
def Issues(owner: String, name: String) = s"${owner}/${name}/issues"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate session key for the pull request search condition.
|
||||||
|
*/
|
||||||
|
def Pulls(owner: String, name: String) = s"${owner}/${name}/pulls"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate session key for the upload filename.
|
||||||
|
*/
|
||||||
|
def Upload(fileId: String) = s"upload_${fileId}"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user