@@ -95,8 +95,8 @@ trait GistControllerBase extends ControllerBase {
9595 redirect(s " /gist " )
9696
9797 } else {
98- val isPrivate = params(" private " ).toBoolean
99- val description = params(" description" )
98+ val mode = Mode .from( params(" mode " ))
99+ val description = params(" description" )
100100
101101 // Create new repository
102102 val repoName = StringUtil .md5(loginAccount.userName + " " + datetime(new java.util.Date ()))
@@ -108,9 +108,9 @@ trait GistControllerBase extends ControllerBase {
108108 registerGist(
109109 loginAccount.userName,
110110 repoName,
111- isPrivate,
112111 getTitle(files.head._1, repoName),
113- description
112+ description,
113+ mode
114114 )
115115
116116 // Commit files
@@ -130,13 +130,15 @@ trait GistControllerBase extends ControllerBase {
130130 val loginAccount = context.loginAccount.get
131131 val files = getFileParameters(true )
132132 val description = params(" description" )
133+ val mode = Mode .from(params(" mode" ))
133134
134135 // Update database
135136 updateGist(
136137 userName,
137138 repoName,
138139 getTitle(files.head._1, repoName),
139- description
140+ description,
141+ mode
140142 )
141143
142144 // Commit files
@@ -170,28 +172,6 @@ trait GistControllerBase extends ControllerBase {
170172 }
171173 })
172174
173- get(" /gist/:userName/:repoName/secret" )(editorOnly {
174- val userName = params(" userName" )
175- val repoName = params(" repoName" )
176-
177- if (isEditable(userName)){
178- updateGistAccessibility(userName, repoName, true )
179- }
180-
181- redirect(s " /gist/ ${userName}/ ${repoName}" )
182- })
183-
184- get(" /gist/:userName/:repoName/public" )(editorOnly {
185- val userName = params(" userName" )
186- val repoName = params(" repoName" )
187-
188- if (isEditable(userName)){
189- updateGistAccessibility(userName, repoName, false )
190- }
191-
192- redirect(s " /gist/ ${userName}/ ${repoName}" )
193- })
194-
195175 get(" /gist/:userName/:repoName/revisions" ){
196176 val userName = params(" userName" )
197177 val repoName = params(" repoName" )
@@ -235,7 +215,7 @@ trait GistControllerBase extends ControllerBase {
235215 using(Git .open(gitdir)){ git =>
236216 val gist = getGist(userName, repoName).get
237217
238- if (! gist.isPrivate || context.loginAccount.exists(x => x.isAdmin || x.userName == userName)){
218+ if (gist.mode == " PUBLIC " || context.loginAccount.exists(x => x.isAdmin || x.userName == userName)){
239219 JGitUtil .getFileList(git, revision, " ." ).find(_.name == fileName).map { file =>
240220 defining(JGitUtil .getContentFromId(git, file.id, false ).get){ bytes =>
241221 RawData (FileUtil .getContentType(file.name, bytes), bytes)
@@ -326,7 +306,7 @@ trait GistControllerBase extends ControllerBase {
326306 val originUserName = gist.originUserName.getOrElse(gist.userName)
327307 val originRepoName = gist.originRepositoryName.getOrElse(gist.repositoryName)
328308
329- registerGist(loginAccount.userName, repoName, gist.isPrivate , gist.title, gist.description ,
309+ registerGist(loginAccount.userName, repoName, gist.title , gist.description, Mode .from( gist.mode) ,
330310 Some (originUserName), Some (originRepoName))
331311
332312 // Clone repository
@@ -442,7 +422,7 @@ trait GistControllerBase extends ControllerBase {
442422 // //////////////////////////////////////////////////////////////////////////////
443423
444424
445- private def _gist (userName : String , repoName : Option [String ] = None , revision : String = " master" ): Html = {
425+ private def _gist (userName : String , repoName : Option [String ] = None , revision : String = " master" ): Any = {
446426 repoName match {
447427 case None => {
448428 val page = params.get(" page" ) match {
@@ -467,22 +447,33 @@ trait GistControllerBase extends ControllerBase {
467447 }
468448 case Some (repoName) => {
469449 val gist = getGist(userName, repoName).get
470- val originUserName = gist.originUserName.getOrElse(userName)
471- val originRepoName = gist.originRepositoryName.getOrElse(repoName)
472-
473- html.detail(
474- gist,
475- getForkedCount(originUserName, originRepoName),
476- GistRepositoryURL (gist, baseUrl, context.settings),
477- revision,
478- getGistFiles(userName, repoName, revision),
479- getGistComments(userName, repoName),
480- isEditable(userName)
481- )
450+ if (gist.mode == " PRIVATE" ){
451+ context.loginAccount match {
452+ case Some (x) if (x.userName == userName) => _gistDetail(gist, userName, repoName, revision)
453+ case _ => Unauthorized ()
454+ }
455+ } else {
456+ _gistDetail(gist, userName, repoName, revision)
457+ }
482458 }
483459 }
484460 }
485461
462+ private def _gistDetail (gist : Gist , userName : String , repoName : String , revision : String ): Html = {
463+ val originUserName = gist.originUserName.getOrElse(userName)
464+ val originRepoName = gist.originRepositoryName.getOrElse(repoName)
465+
466+ html.detail(
467+ gist,
468+ getForkedCount(originUserName, originRepoName),
469+ GistRepositoryURL (gist, baseUrl, context.settings),
470+ revision,
471+ getGistFiles(userName, repoName, revision),
472+ getGistComments(userName, repoName),
473+ isEditable(userName)
474+ )
475+ }
476+
486477 private def getGistFiles (userName : String , repoName : String , revision : String = " master" ): Seq [(String , String )] = {
487478 val gitdir = new File (GistRepoDir , userName + " /" + repoName)
488479 using(Git .open(gitdir)){ git =>
0 commit comments