mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-10-31 18:46:28 +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