- Removed CMS_REQUEST_UTIL - centralize a few request related code into CMS_API Added CMS_API.user, CMS_API.set_user (CMS_USER), ... and user related routines. Refactored Auth related code - added various abstractions to factorize implementation and harmonize solutions. - revisited the logout strategy. - updated the account info page, and remove info user should not care about. - simplified the process, and encourage auth module to follow same design. Added CMS_LINK helper routines to modify the related query string. Removed CMS_USER.profile (and related routines) - It was not used so far. - it will probably a specific module later, if needed. Update various module to avoid fetching user from sql directly, and let this task to CMS_USER_API. Removed CMS_NODE_API.node_author (a_node: CMS_NODE): detachable CMS_USER, - as the info is already in CMS_NODE.author Added CMS_RESPONSE.redirection_delay, if ever one code want to redirect after a few seconds. Added the request uri info to the not found cms response.
113 lines
3.0 KiB
Plaintext
113 lines
3.0 KiB
Plaintext
note
|
|
description: "Summary description for {CMS_USER_VIEW_RESPONSE}."
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
CMS_USER_VIEW_RESPONSE
|
|
|
|
inherit
|
|
CMS_RESPONSE
|
|
|
|
create
|
|
make
|
|
|
|
feature -- Query
|
|
|
|
user_id_path_parameter (req: WSF_REQUEST): INTEGER_64
|
|
-- User id passed as path parameter for request `req'.
|
|
local
|
|
s: STRING
|
|
do
|
|
if attached {WSF_STRING} req.path_parameter ("id") as p_nid then
|
|
s := p_nid.value
|
|
if s.is_integer_64 then
|
|
Result := s.to_integer_64
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
feature -- Execution
|
|
|
|
process
|
|
-- Computed response message.
|
|
local
|
|
uid: INTEGER_64
|
|
user_api : CMS_USER_API
|
|
do
|
|
user_api := api.user_api
|
|
uid := user_id_path_parameter (request)
|
|
if uid > 0 and then attached user_api.user_by_id (uid) as l_user then
|
|
append_html_to_output (l_user, Current)
|
|
else
|
|
set_main_content ("Missing User")
|
|
end
|
|
end
|
|
|
|
append_html_to_output (a_user: CMS_USER; a_response: CMS_RESPONSE)
|
|
local
|
|
lnk: CMS_LOCAL_LINK
|
|
s: STRING
|
|
l_role: CMS_USER_ROLE
|
|
do
|
|
a_response.set_value (a_user, "user")
|
|
create lnk.make (a_response.translation ("View", Void), "admin/user/" + a_user.id.out)
|
|
lnk.set_is_active (True)
|
|
lnk.set_weight (1)
|
|
a_response.add_to_primary_tabs (lnk)
|
|
create lnk.make (a_response.translation ("Edit", Void), "admin/user/" + a_user.id.out + "/edit")
|
|
lnk.set_permission_arguments (<<"manage admin", "manage users", "manage own user">>)
|
|
lnk.set_weight (2)
|
|
a_response.add_to_primary_tabs (lnk)
|
|
|
|
if a_user /= Void and then a_user.id > 0 then
|
|
create lnk.make (a_response.translation ("Delete", Void), "admin/user/" + a_user.id.out + "/delete")
|
|
lnk.set_weight (3)
|
|
a_response.add_to_primary_tabs (lnk)
|
|
end
|
|
|
|
-- FIXME: [04/aug/2015] use a CMS_FORM rather than hardcoded html.
|
|
-- So that other module may easily integrate them-selves to add information.
|
|
create s.make_empty
|
|
s.append ("<div class=%"info%"> ")
|
|
s.append ("<h4>Account Information</h4>")
|
|
s.append ("<p>Username: ")
|
|
s.append (html_encoded (a_user.name))
|
|
s.append ("</p>")
|
|
if attached a_user.email as l_email then
|
|
s.append ("<p>Email: ")
|
|
s.append (l_email)
|
|
s.append ("</p>")
|
|
end
|
|
|
|
if
|
|
attached {LIST [CMS_USER_ROLE]} api.user_api.user_roles (a_user) as l_roles and then
|
|
not l_roles.is_empty
|
|
then
|
|
s.append ("<h4>Role(s):</h4>")
|
|
s.append ("<ul class=%"user-roles%">")
|
|
across l_roles as ic loop
|
|
l_role := ic.item
|
|
s.append ("<li>")
|
|
s.append (link (l_role.name, "admin/role/" + l_role.id.out, Void))
|
|
s.append ("</li>")
|
|
if request.query_parameter ("debug") /= Void then
|
|
s.append ("<h5>Permissions:</h5>")
|
|
s.append ("<ul class=%"cms-permissions%">%N")
|
|
across l_role.permissions as perms_ic loop
|
|
s.append ("<li class=%"cms-permission%">" + perms_ic.item + "</li>%N")
|
|
end
|
|
s.append ("</ul>%N")
|
|
end
|
|
end
|
|
s.append ("</ul>%N")
|
|
end
|
|
|
|
s.append ("</div>")
|
|
a_response.set_title (a_user.name)
|
|
a_response.set_main_content (s)
|
|
end
|
|
|
|
end
|