@@ -92,14 +92,18 @@ trait GistControllerBase extends ControllerBase {
92
92
val files : Seq [(String , JGitUtil .ContentInfo )] = JGitUtil .getFileList(git, " master" , " ." ).map { file =>
93
93
(if (isGistFile(file.name)) " " else file.name) -> JGitUtil .getContentInfo(git, file.name, file.id)
94
94
}
95
- html.edit(getGist(userName, repoName), files)
95
+ html.edit(getGist(userName, repoName), files, None )
96
96
}
97
97
}
98
98
})
99
99
100
100
post(" /gist/_new" )(usersOnly {
101
101
if (context.loginAccount.isDefined){
102
102
val loginAccount = context.loginAccount.get
103
+ val userName = params.getOrElse(" userName" , loginAccount.userName)
104
+
105
+ // TODO check
106
+
103
107
val files = getFileParameters()
104
108
105
109
if (files.isEmpty){
@@ -110,14 +114,14 @@ trait GistControllerBase extends ControllerBase {
110
114
val description = params(" description" )
111
115
112
116
// Create new repository
113
- val repoName = StringUtil .md5(loginAccount. userName + " " + datetime(new java.util.Date ()))
114
- val gitdir = new File (GistRepoDir , loginAccount. userName + " /" + repoName)
117
+ val repoName = StringUtil .md5(userName + " " + datetime(new java.util.Date ()))
118
+ val gitdir = new File (GistRepoDir , userName + " /" + repoName)
115
119
gitdir.mkdirs()
116
120
JGitUtil .initRepository(gitdir)
117
121
118
122
// Insert record
119
123
registerGist(
120
- loginAccount. userName,
124
+ userName,
121
125
repoName,
122
126
getTitle(files.head._1, repoName),
123
127
description,
@@ -129,7 +133,7 @@ trait GistControllerBase extends ControllerBase {
129
133
commitFiles(git, loginAccount, " Initial commit" , files)
130
134
}
131
135
132
- redirect(s " /gist/ ${loginAccount. userName}/ ${repoName}" )
136
+ redirect(s " /gist/ ${userName}/ ${repoName}" )
133
137
}
134
138
}
135
139
})
@@ -173,7 +177,7 @@ trait GistControllerBase extends ControllerBase {
173
177
val userName = params(" userName" )
174
178
val repoName = params(" repoName" )
175
179
176
- if (isEditable(userName)){
180
+ if (isEditable(userName, loginUserGroups )){
177
181
deleteGist(userName, repoName)
178
182
179
183
val gitdir = new File (GistRepoDir , userName + " /" + repoName)
@@ -205,7 +209,7 @@ trait GistControllerBase extends ControllerBase {
205
209
gist,
206
210
getForkedCount(originUserName, originRepoName),
207
211
GistRepositoryURL (gist, baseUrl, context.settings),
208
- isEditable(userName),
212
+ isEditable(userName, loginUserGroups ),
209
213
commits
210
214
)
211
215
}
@@ -268,12 +272,18 @@ trait GistControllerBase extends ControllerBase {
268
272
getUserGists(userName, context.loginAccount.map(_.userName), 0 , Limit ),
269
273
countUserGists(userName, context.loginAccount.map(_.userName))
270
274
)
275
+
276
+ val createSnippet = context.loginAccount.exists { loginAccount =>
277
+ loginAccount.userName == userName || getGroupsByUserName(loginAccount.userName).contains(userName)
278
+ }
279
+
271
280
getAccountByUserName(userName).map { account =>
272
281
html.profile(
273
- account,
274
- if (account.isGroupAccount) Nil else getGroupsByUserName(userName),
275
- getAccountExtraMailAddresses(userName),
276
- result._1
282
+ account = account,
283
+ groupNames = if (account.isGroupAccount) Nil else getGroupsByUserName(userName),
284
+ extraMailAddresses = getAccountExtraMailAddresses(userName),
285
+ gists = result._1,
286
+ createSnippet = createSnippet
277
287
)
278
288
} getOrElse NotFound
279
289
}
@@ -283,7 +293,11 @@ trait GistControllerBase extends ControllerBase {
283
293
}
284
294
285
295
get(" /gist/_new" )(usersOnly {
286
- html.edit(None , Seq ((" " , JGitUtil .ContentInfo (" text" , None , None , Some (" UTF-8" )))))
296
+ val userName = params.get(" userName" )
297
+
298
+ if (isEditable(userName.getOrElse(context.loginAccount.get.userName), loginUserGroups)){
299
+ html.edit(None , Seq ((" " , JGitUtil .ContentInfo (" text" , None , None , Some (" UTF-8" )))), userName)
300
+ } else Unauthorized ()
287
301
})
288
302
289
303
get(" /gist/_add" ){
@@ -335,7 +349,7 @@ trait GistControllerBase extends ControllerBase {
335
349
getForkedCount(userName, repoName),
336
350
GistRepositoryURL (gist, baseUrl, context.settings),
337
351
getForkedGists(userName, repoName),
338
- isEditable(userName)
352
+ isEditable(userName, loginUserGroups )
339
353
)
340
354
} getOrElse NotFound
341
355
}
@@ -503,7 +517,7 @@ trait GistControllerBase extends ControllerBase {
503
517
revision,
504
518
getGistFiles(userName, repoName, revision),
505
519
getGistComments(userName, repoName),
506
- isEditable(userName)
520
+ isEditable(userName, loginUserGroups )
507
521
)
508
522
}
509
523
@@ -526,4 +540,10 @@ trait GistControllerBase extends ControllerBase {
526
540
}
527
541
}
528
542
543
+ private def loginUserGroups : Seq [String ] = {
544
+ context.loginAccount.map { account =>
545
+ getGroupsByUserName(account.userName)
546
+ }.getOrElse(Nil )
547
+ }
548
+
529
549
}
0 commit comments