+ {unless isset="$user"}
+
+
+
+ {/unless}
+ {if isset=$error}
+
+ {/if}
+
diff --git a/examples/demo/src/demo_cms_execution.e b/examples/demo/src/demo_cms_execution.e
index a3286d9..c73948f 100644
--- a/examples/demo/src/demo_cms_execution.e
+++ b/examples/demo/src/demo_cms_execution.e
@@ -89,6 +89,9 @@ feature -- CMS modules
create {GOOGLE_CUSTOM_SEARCH_MODULE} m.make
a_setup.register_module (m)
+
+ create {CMS_SESSION_AUTH_MODULE} m.make
+ a_setup.register_module (m)
end
end
diff --git a/modules/oauth20/cms_oauth_20_module.e b/modules/oauth20/cms_oauth_20_module.e
index 1e96534..281d7a9 100644
--- a/modules/oauth20/cms_oauth_20_module.e
+++ b/modules/oauth20/cms_oauth_20_module.e
@@ -227,7 +227,7 @@ feature -- Hooks
until
lnk2 /= Void
loop
- if ic.item.location.same_string ("account/roc-logout") then
+ if ic.item.location.same_string ("account/roc-logout") or else ic.item.location.same_string ("basic_auth_logoff") then
lnk2 := ic.item
end
end
diff --git a/modules/openid/cms_openid_module.e b/modules/openid/cms_openid_module.e
index e52184e..153305f 100644
--- a/modules/openid/cms_openid_module.e
+++ b/modules/openid/cms_openid_module.e
@@ -203,7 +203,7 @@ feature -- Hooks
until
lnk2 /= Void
loop
- if ic.item.location.same_string ("account/roc-logout") then
+ if ic.item.location.same_string ("account/roc-logout") or else ic.item.location.same_string ("basic_auth_logoff") then
lnk2 := ic.item
end
end
diff --git a/modules/openid/persitence/cms_openid_storage_sql.e b/modules/openid/persitence/cms_openid_storage_sql.e
index f44c975..bb2f0d7 100644
--- a/modules/openid/persitence/cms_openid_storage_sql.e
+++ b/modules/openid/persitence/cms_openid_storage_sql.e
@@ -197,7 +197,7 @@ feature {NONE} -- User OpenID
Sql_insert_openid: STRING = "INSERT INTO openid_items (uid, identity, created) VALUES (:uid, :identity, :utc_date);"
- Sql_openid_consumers: STRING = "SELECT name FROM openid_consumers";
+ Sql_openid_consumers: STRING = "SELECT name FROM openid_consumers;"
feature {NONE} -- Consumer
diff --git a/modules/session_auth/cms_session_api.e b/modules/session_auth/cms_session_api.e
new file mode 100644
index 0000000..fd62dd2
--- /dev/null
+++ b/modules/session_auth/cms_session_api.e
@@ -0,0 +1,63 @@
+note
+ description: "API to manage CMS User session authentication"
+ date: "$Date$"
+ revision: "$Revision$"
+
+class
+ CMS_SESSION_API
+
+
+inherit
+ CMS_MODULE_API
+
+ REFACTORING_HELPER
+
+create {CMS_SESSION_AUTH_MODULE}
+ make_with_storage
+
+feature {NONE} -- Initialization
+
+ make_with_storage (a_api: CMS_API; a_session_auth_storage: CMS_SESSION_AUTH_STORAGE_I)
+ -- Create an object with api `a_api' and storage `a_session_auth_storage'.
+ do
+ session_auth_storage := a_session_auth_storage
+ make (a_api)
+ ensure
+ session_auth_storage_set: session_auth_storage = a_session_auth_storage
+ end
+
+feature {CMS_MODULE} -- Access: User session storage.
+
+ session_auth_storage: CMS_SESSION_AUTH_STORAGE_I
+ -- storage interface.
+
+feature -- Access
+
+ user_by_session_token (a_token: READABLE_STRING_32): detachable CMS_USER
+ -- Retrieve user by token `a_token', if any.
+ do
+ Result := session_auth_storage.user_by_session_token (a_token)
+ end
+
+ has_user_token (a_user: CMS_USER): BOOLEAN
+ -- Has the user `a_user' and associated session token?
+ do
+ Result := session_auth_storage.has_user_token (a_user)
+ end
+
+feature -- Change User session
+
+ new_user_session_auth (a_token: READABLE_STRING_GENERAL; a_user: CMS_USER;)
+ -- New user session for user `a_user' with token `a_token'.
+ do
+ session_auth_storage.new_user_session_auth (a_token, a_user)
+ end
+
+
+ update_user_session_auth (a_token: READABLE_STRING_GENERAL; a_user: CMS_USER )
+ -- Update user session for user `a_user' with token `a_token'.
+ do
+ session_auth_storage.update_user_session_auth (a_token, a_user)
+ end
+
+end
diff --git a/modules/session_auth/cms_session_auth-safe.ecf b/modules/session_auth/cms_session_auth-safe.ecf
new file mode 100644
index 0000000..95f44a5
--- /dev/null
+++ b/modules/session_auth/cms_session_auth-safe.ecf
@@ -0,0 +1,28 @@
+
+