Add page that always requires a logged-in user
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / EditProfileFieldPage.kt
index 8109e3a..b63301b 100644 (file)
@@ -1,5 +1,6 @@
 package net.pterodactylus.sone.web.pages
 
+import net.pterodactylus.sone.data.Sone
 import net.pterodactylus.sone.utils.isPOST
 import net.pterodactylus.sone.web.WebInterface
 import net.pterodactylus.sone.web.page.FreenetRequest
@@ -10,17 +11,16 @@ import net.pterodactylus.util.template.TemplateContext
  * Page that lets the user edit the name of a profile field.
  */
 class EditProfileFieldPage(template: Template, webInterface: WebInterface):
-               SoneTemplatePage("editProfileField.html", template, "Page.EditProfileField.Title", webInterface, true) {
+               LoggedInPage("editProfileField.html", template, "Page.EditProfileField.Title", webInterface) {
 
-       override fun handleRequest(request: FreenetRequest, templateContext: TemplateContext) {
-               sessionProvider.getCurrentSone(request.toadletContext)!!.let { currentSone ->
+       override fun handleRequest(freenetRequest: FreenetRequest, currentSone: Sone, templateContext: TemplateContext) {
                        currentSone.profile.let { profile ->
-                               val field = profile.getFieldById(request.httpRequest.getPartAsStringFailsafe("field", 36)) ?: throw RedirectException("invalid.html")
-                               if (request.isPOST) {
-                                       if (request.httpRequest.getPartAsStringFailsafe("cancel", 4) == "true") {
+                               if (freenetRequest.isPOST) {
+                                       if (freenetRequest.httpRequest.getPartAsStringFailsafe("cancel", 4) == "true") {
                                                throw RedirectException("editProfile.html#profile-fields")
                                        }
-                                       request.httpRequest.getPartAsStringFailsafe("name", 256).let { name ->
+                                       val field = profile.getFieldById(freenetRequest.httpRequest.getPartAsStringFailsafe("field", 36)) ?: throw RedirectException("invalid.html")
+                                       freenetRequest.httpRequest.getPartAsStringFailsafe("name", 256).let { name ->
                                                try {
                                                        if (name != field.name) {
                                                                field.name = name
@@ -29,12 +29,12 @@ class EditProfileFieldPage(template: Template, webInterface: WebInterface):
                                                        throw RedirectException("editProfile.html#profile-fields")
                                                } catch (e: IllegalArgumentException) {
                                                        templateContext["duplicateFieldName"] = true
+                                                       return
                                                }
                                        }
                                }
-                               templateContext["field"] = field
+                               templateContext["field"] = profile.getFieldById(freenetRequest.httpRequest.getParam("field")) ?: throw RedirectException("invalid.html")
                        }
-               }
        }
 
 }