1919import no .java .submit .service .ConferenceService ;
2020import no .java .submit .service .TalksService ;
2121import no .java .submit .service .TimelineService ;
22+ import no .java .submit .util .ExtensionService ;
2223import no .java .submit .util .SessionHelper ;
2324import no .java .submit .util .SessionSecretHelper ;
2425import no .java .submit .util .UserHelper ;
@@ -51,6 +52,9 @@ public class TalkController {
5152 @ Inject
5253 SessionSecretHelper sessionSecrets ;
5354
55+ @ Inject
56+ ExtensionService extensionService ;
57+
5458 @ Inject
5559 Template talk ;
5660
@@ -133,7 +137,7 @@ public RestResponse<?> redirectWithSecret(@PathParam("sessionId") String session
133137 @ Path ("new" )
134138 @ Authenticated
135139 public TemplateInstance newSession (@ Context SecurityIdentity securityIdentity ) {
136- if (timelineService .isClosed (UserHelper . hasExtension (securityIdentity )))
140+ if (timelineService .isClosed (extensionService . has (securityIdentity )))
137141 return error
138142 .data ("title" , "Too late" )
139143 .data ("message" , "It is past deadline for submission of new talks." );
@@ -157,7 +161,7 @@ public TemplateInstance newSession(@Context SecurityIdentity securityIdentity) {
157161 @ Consumes (MediaType .APPLICATION_FORM_URLENCODED )
158162 @ Authenticated
159163 public Object newSessionPost (SessionForm form , @ Context SecurityIdentity securityIdentity ) {
160- if (timelineService .isClosed (UserHelper . hasExtension (securityIdentity )))
164+ if (timelineService .isClosed (extensionService . has (securityIdentity )))
161165 return error
162166 .data ("title" , "Too late" )
163167 .data ("message" , "It is past deadline for submission of new talks." );
@@ -192,18 +196,18 @@ public Object newSessionPost(SessionForm form, @Context SecurityIdentity securit
192196 public TemplateInstance editSession (@ PathParam ("sessionId" ) String sessionId , @ Context SecurityIdentity securityIdentity ) {
193197 var email = UserHelper .getEmail (securityIdentity );
194198
195- return editSession (sessionId , email , null );
199+ return editSession (sessionId , email , null , extensionService . has ( securityIdentity ) );
196200 }
197201
198202 @ GET
199203 @ Path ("{sessionId}/{secret}/edit" )
200204 public TemplateInstance editSession (@ PathParam ("sessionId" ) String sessionId , @ PathParam ("secret" ) String secret ) {
201205 sessionSecrets .validate (sessionId , secret );
202206
203- return editSession (sessionId , "" , secret );
207+ return editSession (sessionId , "" , secret , false );
204208 }
205209
206- public TemplateInstance editSession (String sessionId , String email , String secret ) {
210+ public TemplateInstance editSession (String sessionId , String email , String secret , boolean hasExtension ) {
207211 try {
208212 var session = talksService .getSession (email , sessionId );
209213
@@ -213,7 +217,7 @@ public TemplateInstance editSession(String sessionId, String email, String secre
213217 if (!conferenceService .current ().id .equals (session .conferenceId ))
214218 throw new NotFoundException ();
215219
216- return (timelineService .isClosed (appAdmins .contains (email )) ? sessionFormClosed : sessionForm )
220+ return (timelineService .isClosed (appAdmins .contains (email ) || hasExtension ) ? sessionFormClosed : sessionForm )
217221 .data ("form" , SessionForm .parse (session ))
218222 .data ("val" , Collections .emptyMap ())
219223 .data ("sessionId" , sessionId )
@@ -230,7 +234,7 @@ public TemplateInstance editSession(String sessionId, String email, String secre
230234 public Object editSessionPost (@ PathParam ("sessionId" ) String sessionId , SessionForm form , @ Context SecurityIdentity securityIdentity ) {
231235 var email = UserHelper .getEmail (securityIdentity );
232236
233- return editSessionPost (sessionId , form , email , null );
237+ return editSessionPost (sessionId , form , email , null , extensionService . has ( securityIdentity ) );
234238 }
235239
236240 @ POST
@@ -239,14 +243,14 @@ public Object editSessionPost(@PathParam("sessionId") String sessionId, SessionF
239243 public Object editSessionPost (@ PathParam ("sessionId" ) String sessionId , @ PathParam ("secret" ) String secret , SessionForm form ) {
240244 sessionSecrets .validate (sessionId , secret );
241245
242- return editSessionPost (sessionId , form , "" , secret );
246+ return editSessionPost (sessionId , form , "" , secret , false );
243247 }
244248
245- public Object editSessionPost (String sessionId , SessionForm form , String email , String secret ) {
249+ public Object editSessionPost (String sessionId , SessionForm form , String email , String secret , boolean hasExtension ) {
246250 // Validate form and present form if there are any errors
247251 var validation = validator .validate (form );
248252 if (!validation .isEmpty ()) {
249- return (timelineService .isClosed (appAdmins .contains (email )) ? sessionFormClosed : sessionForm )
253+ return (timelineService .isClosed (appAdmins .contains (email ) || hasExtension ) ? sessionFormClosed : sessionForm )
250254 .data ("form" , form )
251255 .data ("val" , validation .stream ().collect (Collectors .groupingBy (c -> c .getPropertyPath ().toString ())))
252256 .data ("sessionId" , sessionId )
@@ -262,7 +266,7 @@ public Object editSessionPost(String sessionId, SessionForm form, String email,
262266 // Prepare form for sending
263267 var newSession = form .asSession ();
264268
265- if (timelineService .isClosed (appAdmins .contains (email ))) {
269+ if (timelineService .isClosed (appAdmins .contains (email ) || hasExtension )) {
266270 SessionHelper .partialUpdate (session , newSession );
267271 } else {
268272 // Update session with new data
0 commit comments