- 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.
109 lines
2.5 KiB
Plaintext
109 lines
2.5 KiB
Plaintext
note
|
|
description: "Common ancestor for Authentication modules."
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
deferred class
|
|
CMS_AUTH_MODULE_I
|
|
|
|
inherit
|
|
CMS_MODULE
|
|
redefine
|
|
setup_hooks
|
|
end
|
|
|
|
CMS_HOOK_AUTO_REGISTER
|
|
|
|
CMS_HOOK_MENU_SYSTEM_ALTER
|
|
|
|
SHARED_LOGGER
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
make
|
|
do
|
|
package := "authentication"
|
|
add_dependency ({CMS_AUTHENTICATION_MODULE})
|
|
end
|
|
|
|
feature -- Access: auth strategy
|
|
|
|
login_title: READABLE_STRING_GENERAL
|
|
-- Module specific login title.
|
|
deferred
|
|
end
|
|
|
|
login_location: STRING
|
|
-- Login cms location for Current module.
|
|
deferred
|
|
end
|
|
|
|
logout_location: STRING
|
|
-- Logout cms location for Current module.
|
|
deferred
|
|
end
|
|
|
|
is_authenticating (a_response: CMS_RESPONSE): BOOLEAN
|
|
-- Is Current module strategy currently authenticating active user?
|
|
deferred
|
|
ensure
|
|
Result implies a_response.is_authenticated
|
|
end
|
|
|
|
feature -- Hooks configuration
|
|
|
|
setup_hooks (a_hooks: CMS_HOOK_CORE_MANAGER)
|
|
-- Module hooks configuration.
|
|
do
|
|
auto_subscribe_to_hooks (a_hooks)
|
|
a_hooks.subscribe_to_menu_system_alter_hook (Current)
|
|
end
|
|
|
|
feature -- Hooks
|
|
|
|
menu_system_alter (a_menu_system: CMS_MENU_SYSTEM; a_response: CMS_RESPONSE)
|
|
-- <Precursor>
|
|
local
|
|
lnk: CMS_LOCAL_LINK
|
|
l_destination: READABLE_STRING_8
|
|
do
|
|
if attached {WSF_STRING} a_response.request.query_parameter ("destination") as p_destination then
|
|
l_destination := p_destination.url_encoded_value
|
|
else
|
|
l_destination := percent_encoded (a_response.location)
|
|
end
|
|
if is_authenticating (a_response) then
|
|
|
|
else
|
|
if a_response.location.starts_with ("account/auth/") then
|
|
create lnk.make (login_title, login_location)
|
|
if not l_destination.starts_with ("account/auth/") then
|
|
lnk.add_query_parameter ("destination", l_destination)
|
|
end
|
|
lnk.set_expandable (True)
|
|
a_response.add_to_primary_tabs (lnk)
|
|
end
|
|
end
|
|
end
|
|
|
|
feature {NONE} -- Helpers
|
|
|
|
template_block (a_block_id: READABLE_STRING_8; a_response: CMS_RESPONSE): detachable CMS_SMARTY_TEMPLATE_BLOCK
|
|
-- Smarty content block for `a_block_id'
|
|
local
|
|
p: detachable PATH
|
|
do
|
|
create p.make_from_string ("templates")
|
|
p := p.extended ("block_").appended (a_block_id).appended_with_extension ("tpl")
|
|
p := a_response.api.module_theme_resource_location (Current, p)
|
|
if p /= Void then
|
|
if attached p.entry as e then
|
|
create Result.make (a_block_id, Void, p.parent, e)
|
|
else
|
|
create Result.make (a_block_id, Void, p.parent, p)
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|