Mercurial > prosody-modules
changeset 3352:f7668aee968a
mod_password_reset: Switch to util.interpolation (our standard template library)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 09 Oct 2018 14:09:54 +0100 (2018-10-09) |
parents | 662f2722f745 |
children | e8d6f602f382 |
files | mod_password_reset/mod_password_reset.lua mod_password_reset/password_reset/password_reset.html mod_password_reset/password_reset/password_result.html |
diffstat | 3 files changed, 21 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_password_reset/mod_password_reset.lua Tue Oct 09 14:03:00 2018 +0100 +++ b/mod_password_reset/mod_password_reset.lua Tue Oct 09 14:09:54 2018 +0100 @@ -5,7 +5,8 @@ local http_formdecode = require "net.http".formdecode; local usermanager = require "core.usermanager"; local dataforms_new = require "util.dataforms".new; -local tohtml = require "util.stanza".xml_escape +local st = require "util.stanza"; +local apply_template = require"util.interpolation".new("%b{}", st.xml_escape); local tostring = tostring; local reset_tokens = module:open_store(); @@ -17,16 +18,8 @@ module:depends"adhoc"; module:depends"http"; -local function apply_template(template, args) - return - template:gsub("{{([^}]*)}}", function (k) - if args[k] then - return tohtml(args[k]) - else - return k - end - end) -end +local form_template = assert(module:load_resource("password_reset/password_reset.html")):read("*a"); +local result_template = assert(module:load_resource("password_reset/password_result.html")):read("*a"); function generate_page(event) local request, response = event.request, event.response; @@ -38,14 +31,13 @@ if not reset_info or os.difftime(os.time(), reset_info.generated_at) > max_token_age then module:log("warn", "Expired token: %s", token or "<none>"); - local template = assert(module:load_resource("password_reset/password_result.html")):read("*a"); - - return apply_template(template, { classes = "alert-danger", message = "This link has expired." }) + return apply_template(result_template, { classes = "alert-danger", message = "This link has expired." }) end - local template = assert(module:load_resource("password_reset/password_reset.html")):read("*a"); - - return apply_template(template, { jid = reset_info.user.."@"..module.host, token = token }); + return apply_template(form_template, { + jid = reset_info.user.."@"..module.host; + token = token; + }); end function handle_form(event) @@ -55,12 +47,10 @@ local reset_info = reset_tokens:get(token); - local template = assert(module:load_resource("password_reset/password_result.html")):read("*a"); - response.headers.content_type = "text/html; charset=utf-8"; if not reset_info or os.difftime(os.time(), reset_info.generated_at) > max_token_age then - return apply_template(template, { classes = "alert-danger", message = "This link has expired." }) + return apply_template(result_template, { classes = "alert-danger", message = "This link has expired." }) end local ok, err = usermanager.set_password(reset_info.user, password, module.host); @@ -68,12 +58,14 @@ if ok then reset_tokens:set(token, nil); - return apply_template(template, { classes = "alert-success", + return apply_template(result_template, { classes = "alert-success", message = "Your password has been updated! Happy chatting :)" }) else module:log("debug", "Resetting password failed: " .. tostring(err)); - - return apply_template(template, { classes = "alert-danger", message = "An unknown error has occurred." }) + return apply_template(result_template, { + classes = "alert-danger"; + message = "An unknown error has occurred."; + }) end end
--- a/mod_password_reset/password_reset/password_reset.html Tue Oct 09 14:03:00 2018 +0100 +++ b/mod_password_reset/password_reset/password_reset.html Tue Oct 09 14:09:54 2018 +0100 @@ -7,6 +7,9 @@ </head> <body> <div class="container col-md-4 col-md-offset-4" style="margin-top: 100px"> + {message& + <div class="alert {classes}">{message}</div> + } <div class="panel panel-default"> <div class="panel-heading"> <div class="panel-title">Reset password</div> @@ -20,7 +23,7 @@ <div class="form-group" style="margin-right: 0px;"> <label for="user" class="col-sm-2 control-label">Account:</label> <div class="input-group col-sm-10"> - <input type="text" name="user" class="form-control" disabled placeholder="{{jid}}"> + <input type="text" name="user" class="form-control" disabled placeholder="{jid}"> </div> </div> <div class="form-group" style="margin-right: 0px;"> @@ -29,7 +32,7 @@ <input type="password" name="password" class="form-control" placeholder="password"> </div> </div> - <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="token" value="{token}"> <button type="submit" class="btn btn-primary btn-lg">Reset</button> </form> </div>
--- a/mod_password_reset/password_reset/password_result.html Tue Oct 09 14:03:00 2018 +0100 +++ b/mod_password_reset/password_reset/password_result.html Tue Oct 09 14:09:54 2018 +0100 @@ -9,7 +9,7 @@ <div class="container"> <h1>Password reset</h1> - <div class="alert {{classes}}">{{message}}</div> + <div class="alert {classes}">{message}</div> </div> </body> </html>