Update user storage,
Clean code
This commit is contained in:
@@ -1,114 +0,0 @@
|
||||
note
|
||||
description: "Summary description for {CMS_ROLE_VIEW_RESPONSE}."
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
CMS_ROLE_VIEW_RESPONSE
|
||||
|
||||
inherit
|
||||
CMS_RESPONSE
|
||||
redefine
|
||||
make,
|
||||
initialize
|
||||
end
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (req: WSF_REQUEST; res: WSF_RESPONSE; a_api: like api;)
|
||||
do
|
||||
create {WSF_NULL_THEME} wsf_theme.make
|
||||
Precursor (req, res, a_api)
|
||||
end
|
||||
|
||||
initialize
|
||||
do
|
||||
Precursor
|
||||
create {CMS_TO_WSF_THEME} wsf_theme.make (Current, theme)
|
||||
end
|
||||
|
||||
wsf_theme: WSF_THEME
|
||||
|
||||
feature -- Query
|
||||
|
||||
role_id_path_parameter (req: WSF_REQUEST): INTEGER_64
|
||||
-- Role 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 := role_id_path_parameter (request)
|
||||
if uid > 0 and then attached user_api.user_role_by_id (uid.to_integer) as l_role then
|
||||
append_html_to_output (l_role, Current)
|
||||
else
|
||||
set_main_content ("Missing Role")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
append_html_to_output (a_role: CMS_USER_ROLE; a_response: CMS_RESPONSE )
|
||||
local
|
||||
lnk: CMS_LOCAL_LINK
|
||||
s: STRING
|
||||
do
|
||||
a_response.add_variable (a_role, "role")
|
||||
create lnk.make (a_response.translation ("View", Void), "admin/role/" + a_role.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/role/" + a_role.id.out + "/edit")
|
||||
lnk.set_weight (2)
|
||||
a_response.add_to_primary_tabs (lnk)
|
||||
|
||||
if a_role /= Void and then a_role.id > 0 then
|
||||
create lnk.make (a_response.translation ("Delete", Void), "admin/role/" + a_role.id.out + "/delete")
|
||||
lnk.set_weight (3)
|
||||
a_response.add_to_primary_tabs (lnk)
|
||||
end
|
||||
|
||||
create s.make_empty
|
||||
s.append ("<div class=%"info%"> ")
|
||||
s.append ("<h4>Role Information</h4>")
|
||||
s.append ("<p>Role:")
|
||||
s.append (a_role.name)
|
||||
s.append ("</p>")
|
||||
|
||||
s.append ("<h4>Permissions:</h4>")
|
||||
if
|
||||
not a_role.permissions.is_empty
|
||||
then
|
||||
s.append ("<ul class=%"cms-permissions%">%N")
|
||||
across a_role.permissions as ic loop
|
||||
s.append ("<li class=%"cms-permission%">"+ ic.item + "</li>%N")
|
||||
end
|
||||
s.append ("</ul>%N")
|
||||
|
||||
end
|
||||
|
||||
s.append ("</div>")
|
||||
a_response.set_title (a_role.name)
|
||||
a_response.set_main_content (s)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -65,8 +65,7 @@ feature -- Process
|
||||
uid > 0 and then
|
||||
attached user_api.user_by_id (uid) as l_user
|
||||
then
|
||||
fixme ("refactor: process_edit, process_create process edit")
|
||||
if
|
||||
if
|
||||
request.path_info.ends_with_general ("/edit")
|
||||
then
|
||||
edit_form (l_user)
|
||||
@@ -520,160 +519,6 @@ feature -- Generation
|
||||
end
|
||||
end
|
||||
|
||||
handle_admin_hack (a_api: CMS_API; req: WSF_REQUEST; res: WSF_RESPONSE)
|
||||
local
|
||||
s: STRING
|
||||
r: CMS_RESPONSE
|
||||
f: CMS_FORM
|
||||
t: WSF_FORM_TEXT_INPUT
|
||||
fe: WSF_FORM_EMAIL_INPUT
|
||||
fs: WSF_FORM_FIELD_SET
|
||||
f_submit: WSF_FORM_SUBMIT_INPUT
|
||||
do
|
||||
create {GENERIC_VIEW_CMS_RESPONSE} r.make (req, res, a_api)
|
||||
|
||||
create f.make (req.percent_encoded_path_info, {CMS_ADMIN_MODULE}.name + "_hack_form")
|
||||
create fs.make
|
||||
fs.set_legend ("Create new user without password:")
|
||||
create t.make_with_text ("username", "")
|
||||
t.set_label ("User name")
|
||||
t.enable_required
|
||||
t.set_placeholder ("username")
|
||||
fs.extend (t)
|
||||
|
||||
create fe.make_with_text ("email", "")
|
||||
fe.set_label ("Email")
|
||||
fe.set_placeholder ("valid email")
|
||||
fs.extend (fe)
|
||||
create f_submit.make_with_text ("op", "Create user")
|
||||
fs.extend (f_submit)
|
||||
create f_submit.make_with_text ("op", "Update user")
|
||||
fs.extend (f_submit)
|
||||
f.extend (fs)
|
||||
|
||||
if req.is_post_request_method then
|
||||
create s.make_empty
|
||||
f.validation_actions.extend (agent (fd: WSF_FORM_DATA; ia_api: CMS_API)
|
||||
do
|
||||
if attached fd.string_item ("op") as f_op then
|
||||
if f_op.is_case_insensitive_equal_general ("Create user") then
|
||||
if attached fd.string_item ("username") as l_username then
|
||||
if attached ia_api.user_api.user_by_name (l_username) then
|
||||
fd.report_invalid_field ("username", "Username already taken!")
|
||||
end
|
||||
else
|
||||
fd.report_invalid_field ("username", "missing username")
|
||||
end
|
||||
if attached fd.string_item ("email") as l_email then
|
||||
if attached ia_api.user_api.user_by_email (l_email) then
|
||||
fd.report_invalid_field ("email", "Email address already associated with an existing account!")
|
||||
end
|
||||
else
|
||||
fd.report_invalid_field ("email", "missing email address")
|
||||
end
|
||||
elseif f_op.is_case_insensitive_equal_general ("Update user") then
|
||||
if attached fd.string_item ("username") as l_username then
|
||||
if ia_api.user_api.user_by_name (l_username) = Void then
|
||||
fd.report_invalid_field ("username", "Username does not exist!")
|
||||
end
|
||||
else
|
||||
fd.report_invalid_field ("username", "missing username")
|
||||
end
|
||||
end
|
||||
end
|
||||
end(?, a_api)
|
||||
)
|
||||
f.submit_actions.extend (agent (fd: WSF_FORM_DATA; ia_api: CMS_API; a_output: STRING)
|
||||
local
|
||||
u: CMS_USER
|
||||
l_roles: detachable LIST [CMS_USER_ROLE]
|
||||
l_trusted_user_role: detachable CMS_USER_ROLE
|
||||
do
|
||||
if attached fd.string_item ("op") as f_op then
|
||||
if f_op.is_case_insensitive_equal_general ("Create user") then
|
||||
if
|
||||
attached fd.string_item ("username") as l_username and then
|
||||
attached fd.string_item ("email") as l_email and then
|
||||
l_email.is_valid_as_string_8
|
||||
then
|
||||
create u.make (l_username)
|
||||
u.set_email (l_email.as_string_8)
|
||||
u.set_password (new_random_password (u))
|
||||
ia_api.user_api.new_user (u)
|
||||
if ia_api.user_api.has_error then
|
||||
|
||||
end
|
||||
a_output.append ("<li>New user ["+ html_encoded (l_username) +"] created.</li>")
|
||||
else
|
||||
fd.report_invalid_field ("username", "Missing username!")
|
||||
fd.report_invalid_field ("email", "Missing email address!")
|
||||
end
|
||||
elseif f_op.is_case_insensitive_equal_general ("Update user") then
|
||||
if
|
||||
attached fd.string_item ("username") as l_username and then
|
||||
attached ia_api.user_api.user_by_name (l_username) as l_user
|
||||
then
|
||||
l_trusted_user_role := ia_api.user_api.user_role_by_name ("trusted")
|
||||
if l_trusted_user_role = Void then
|
||||
create l_trusted_user_role.make ("trusted")
|
||||
ia_api.user_api.save_user_role (l_trusted_user_role)
|
||||
end
|
||||
|
||||
l_trusted_user_role.add_permission ("admin wdocs")
|
||||
l_trusted_user_role.add_permission ("edit wdocs page")
|
||||
l_trusted_user_role.add_permission ("create wdocs page")
|
||||
l_trusted_user_role.add_permission ("delete wdocs page")
|
||||
l_trusted_user_role.add_permission ("edit any wdocs page")
|
||||
l_trusted_user_role.add_permission ("delete any wdocs page")
|
||||
l_trusted_user_role.add_permission ("clear wdocs cache")
|
||||
|
||||
l_trusted_user_role.add_permission ("create page")
|
||||
l_trusted_user_role.add_permission ("edit any page")
|
||||
l_trusted_user_role.add_permission ("delete any page")
|
||||
l_trusted_user_role.add_permission ("create blog")
|
||||
l_trusted_user_role.add_permission ("edit any blog")
|
||||
l_trusted_user_role.add_permission ("delete any blog")
|
||||
|
||||
l_trusted_user_role.add_permission ("edit any node")
|
||||
l_trusted_user_role.add_permission ("delete any node")
|
||||
|
||||
|
||||
ia_api.user_api.save_user_role (l_trusted_user_role)
|
||||
l_trusted_user_role := ia_api.user_api.user_role_by_name ("trusted")
|
||||
if l_trusted_user_role /= Void then
|
||||
u := l_user
|
||||
ia_api.user_api.update_user (u)
|
||||
l_roles := u.roles
|
||||
if l_roles = Void then
|
||||
create {ARRAYED_LIST [CMS_USER_ROLE]} l_roles.make (1)
|
||||
end
|
||||
l_roles.force (l_trusted_user_role)
|
||||
u.set_roles (l_roles)
|
||||
|
||||
ia_api.user_api.update_user (u)
|
||||
a_output.append ("<li>User ["+ html_encoded (l_username) +"] updated.</li>")
|
||||
else
|
||||
a_output.append ("<li>User ["+ html_encoded (l_username) +"] NOT updated! [ERROR].</li>")
|
||||
end
|
||||
else
|
||||
fd.report_invalid_field ("username", "User does not exist!")
|
||||
end
|
||||
end
|
||||
end
|
||||
end(?, a_api, s)
|
||||
)
|
||||
|
||||
f.process (r)
|
||||
f.append_to_html (create {CMS_TO_WSF_THEME}.make (r, r.theme), s)
|
||||
r.set_main_content (s)
|
||||
elseif req.is_get_head_request_method then
|
||||
create s.make_empty
|
||||
f.append_to_html (create {CMS_TO_WSF_THEME}.make (r, r.theme), s)
|
||||
r.set_main_content (s)
|
||||
end
|
||||
r.execute
|
||||
end
|
||||
|
||||
new_random_password (u: CMS_USER): STRING
|
||||
-- Generate a new token activation token
|
||||
local
|
||||
|
||||
Reference in New Issue
Block a user