diff --git a/plugins/tiddlywiki/multiwikiserver/modules/routes/handlers/manage-user.js b/plugins/tiddlywiki/multiwikiserver/modules/routes/handlers/manage-user.js index e061d9623..8c6b75732 100644 --- a/plugins/tiddlywiki/multiwikiserver/modules/routes/handlers/manage-user.js +++ b/plugins/tiddlywiki/multiwikiserver/modules/routes/handlers/manage-user.js @@ -8,61 +8,61 @@ GET /admin/users/:user_id \*/ (function() { -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -exports.method = "GET"; - -exports.path = /^\/admin\/users\/([^\/]+)\/?$/; - - -exports.handler = function(request,response,state) { - var user_id = $tw.utils.decodeURIComponentSafe(state.params[0]); - var userData = state.server.sqlTiddlerDatabase.getUser(user_id); + /*jslint node: true, browser: true */ + /*global $tw: false */ + "use strict"; - if(!userData) { - response.writeHead(404, "Not Found", {"Content-Type": "text/html"}); - var errorHtml = $tw.mws.store.adminWiki.renderTiddler("text/plain", "$:/plugins/tiddlywiki/multiwikiserver/templates/error", { + exports.method = "GET"; + + exports.path = /^\/admin\/users\/([^\/]+)\/?$/; + + exports.handler = function(request,response,state) { + var user_id = $tw.utils.decodeURIComponentSafe(state.params[0]); + var userData = state.server.sqlTiddlerDatabase.getUser(user_id); + + if(!userData) { + response.writeHead(404, "Not Found", {"Content-Type": "text/html"}); + var errorHtml = $tw.mws.store.adminWiki.renderTiddler("text/plain", "$:/plugins/tiddlywiki/multiwikiserver/templates/error", { + variables: { + "error-message": "User not found" + } + }); + response.write(errorHtml); + response.end(); + return; + } + + // Convert dates to strings and ensure all necessary fields are present + const user = { + user_id: userData.user_id || '', + username: userData.username || '', + email: userData.email || '', + created_at: userData.created_at ? new Date(userData.created_at).toISOString() : '', + last_login: userData.last_login ? new Date(userData.last_login).toISOString() : '' + }; + + // Get all roles which the user has been assigned + var userRoles = state.server.sqlTiddlerDatabase.getUserRoles(user_id); + var allRoles = state.server.sqlTiddlerDatabase.listRoles(); + + response.writeHead(200, "OK", { + "Content-Type": "text/html" + }); + + // Render the html + var html = $tw.mws.store.adminWiki.renderTiddler("text/plain", "$:/plugins/tiddlywiki/multiwikiserver/templates/page", { variables: { - "error-message": "User not found" + "page-content": "$:/plugins/tiddlywiki/multiwikiserver/templates/manage-user", + "user": JSON.stringify(user), + "user-roles": JSON.stringify(userRoles), + "all-roles": JSON.stringify(allRoles), + "is-current-user-profile": state.authenticatedUser && state.authenticatedUser.user_id === user_id ? "yes" : "no", + "username": state.authenticatedUser ? state.authenticatedUser.username : "Guest", + "user-is-admin": state.authenticatedUser && state.authenticatedUser.isAdmin ? "yes" : "no" } }); - response.write(errorHtml); + response.write(html); response.end(); - return; - } - - // Convert dates to strings and ensure all necessary fields are present - const user = { - user_id: userData.user_id || '', - username: userData.username || '', - email: userData.email || '', - created_at: userData.created_at ? new Date(userData.created_at).toISOString() : '', - last_login: userData.last_login ? new Date(userData.last_login).toISOString() : '' }; - - // Get all roles which the user has been assigned - var userRoles = state.server.sqlTiddlerDatabase.getUserRoles(user_id); - var allRoles = state.server.sqlTiddlerDatabase.listRoles(); - response.writeHead(200, "OK", { - "Content-Type": "text/html" - }); - - // Render the html - var html = $tw.mws.store.adminWiki.renderTiddler("text/plain", "$:/plugins/tiddlywiki/multiwikiserver/templates/page", { - variables: { - "page-content": "$:/plugins/tiddlywiki/multiwikiserver/templates/manage-user", - "user": JSON.stringify(user), - "user-roles": JSON.stringify(userRoles), - "all-roles": JSON.stringify(allRoles), - "username": state.authenticatedUser ? state.authenticatedUser.username : "Guest", - "user-is-admin": state.authenticatedUser && state.authenticatedUser.isAdmin ? "yes" : "no" - } - }); - response.write(html); - response.end(); -}; - -}()); \ No newline at end of file + }()); \ No newline at end of file diff --git a/plugins/tiddlywiki/multiwikiserver/templates/manage-user.tid b/plugins/tiddlywiki/multiwikiserver/templates/manage-user.tid index 0b1be2853..3fe501712 100644 --- a/plugins/tiddlywiki/multiwikiserver/templates/manage-user.tid +++ b/plugins/tiddlywiki/multiwikiserver/templates/manage-user.tid @@ -39,6 +39,32 @@ title: $:/plugins/tiddlywiki/multiwikiserver/templates/manage-user $list> + + + <$reveal type="match" state="is-current-user-profile" text="yes"> +
+ $reveal> \ No newline at end of file