2023-08-07 12:13:32 (UTC-03:00)
Marcel Rodrigues <marcelgmr@gmail.com>
add "after" query parameter to login
diff --git a/skopos.lua b/skopos.lua index 553bb80..fe1bcaa 100644 --- a/skopos.lua +++ b/skopos.lua @@ -81,7 +81,7 @@ function App:routes() end}, {"GET", "/login", function (req) - local env = {title=self.title} + local env = {title=self.title, after=req.query.after} return lud.template.render_file("view/login.html", env) end}, {"POST", "/login", @@ -102,8 +102,9 @@ function App:routes() local session_id = auth.b64_enc(auth.uuid4()) self.sessions[session_id] = nick self:log(LOG_INFO, "logged in as "..nick) + local path = req.query.after or "/" local cookie = {key="sid", val=session_id, path="/", age=3*24*60*60} - return "/", 303, "See Other", {cookie} + return path, 303, "See Other", {cookie} else self:log(LOG_WARN, "invalid password for "..nick) end @@ -113,7 +114,7 @@ function App:routes() {"GET", "/i", function (req) local user = self:get_user(req) - if user == nil then return "/login", 303 end + if user == nil then return "/login?after=/i", 303 end local invites = self.model:get_invites(user.id) local env = {title=self.title, invites=invites} return lud.template.render_file("view/invites.html", env) @@ -137,7 +138,7 @@ function App:routes() {"GET", "/p", function (req) local user = self:get_user(req) - if user == nil then return "/login", 303 end + if user == nil then return "/login?after=/p", 303 end local projs = self.model:get_user_projects(user.id) local env = {title=self.title, user=user, projs=projs} return lud.template.render_file("view/projs.html", env) @@ -145,14 +146,14 @@ function App:routes() {"GET", "/p/new", function (req) local user = self:get_user(req) - if user == nil then return "/login", 303 end + if user == nil then return "/login?after=/p/new", 303 end local env = {title=self.title, user=user} return lud.template.render_file("view/proj_form.html", env) end}, {"GET", "/p/([-_%w]+)", function (req, name) local user = self:get_user(req) - if user == nil then return "/login", 303 end + if user == nil then return "/login?after="..req.path, 303 end local proj = self.model:get_user_project(user.id, name) if proj == nil then return "not found", 404 end local states = self.model.states @@ -179,7 +180,7 @@ function App:routes() {"GET", "/p/([-_%w]+)/edit", function (req, name) local user = self:get_user(req) - if user == nil then return "/login", 303 end + if user == nil then return "/login?after="..req.path, 303 end local proj = self.model:get_user_project(user.id, name) if proj == nil then return "not found", 404 end local env = {title=self.title, user=user, proj=proj} @@ -212,7 +213,7 @@ function App:routes() {"GET", "/p/([-_%w]+)/t/new", function (req, name) local user = self:get_user(req) - if user == nil then return "/login", 303 end + if user == nil then return "/login?after="..req.path, 303 end local proj = self.model:get_user_project(user.id, name) if proj == nil then return "not found", 404 end local env = {title=self.title, user=user, proj=proj} @@ -221,7 +222,7 @@ function App:routes() {"GET", "/p/([-_%w]+)/t/(%d+)", function (req, name, code) local user = self:get_user(req) - if user == nil then return "/login", 303 end + if user == nil then return "/login?after="..req.path, 303 end local proj = self.model:get_user_project(user.id, name) if proj == nil then return "not found", 404 end local tick = self.model:get_ticket(proj.id, code, true) @@ -250,7 +251,7 @@ function App:routes() {"GET", "/p/([-_%w]+)/t/(%d+)/edit", function (req, name, code) local user = self:get_user(req) - if user == nil then return "/login", 303 end + if user == nil then return "/login?after="..req.path, 303 end local proj = self.model:get_user_project(user.id, name) if proj == nil then return "not found", 404 end local tick = self.model:get_ticket(proj.id, code) diff --git a/view/login.html b/view/login.html index 21b0d2e..0719c97 100644 --- a/view/login.html +++ b/view/login.html @@ -11,7 +11,12 @@ <body> <br> <h1 class="centered">Login</h1> - <form action="/login" method="post"> + % if $after ~= nil then + % set query = "?after=" .. $after + % else + % set query = "" + % end + <form action="/login{{$query}}" method="post"> <ul class="centered ul-form"> <li><input type="text" class="flat-field" name="username" placeholder="Username"