Replaced hardcoded name "ROC CMS" for placeholder $sitename, and missing href's with $host. Renamed database script and database table for temporal users. Renamed CMS_AUTH_API AS CMS_USER_TEMP_API. Revert design to use CMS_TEMPORAL_USER and clean CMS_USER. Refactor rename cms_auth_storage_* classes to CMS_TEMPORAL_USER_STORAGE_* Added Pending Registrations to the admin menu to show the list of pending registrarions added CSS to display temporal users
307 lines
5.6 KiB
Plaintext
307 lines
5.6 KiB
Plaintext
note
|
|
description: "[
|
|
Interface representing a USER in the CMS system.
|
|
]"
|
|
date: "$Date: 2015-01-27 19:15:02 +0100 (mar., 27 janv. 2015) $"
|
|
revision: "$Revision: 96542 $"
|
|
|
|
class
|
|
CMS_USER
|
|
|
|
inherit
|
|
|
|
DEBUG_OUTPUT
|
|
|
|
create
|
|
make,
|
|
make_with_id -- MAYBE: export to CMS_STORAGE
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
make (a_name: READABLE_STRING_32)
|
|
-- Create an object with name `a_name'.
|
|
require
|
|
a_name_not_empty: not a_name.is_whitespace
|
|
do
|
|
name := a_name
|
|
initialize
|
|
ensure
|
|
name_set: name = a_name
|
|
status_not_active: status = not_active
|
|
end
|
|
|
|
make_with_id (a_id: INTEGER_64)
|
|
require
|
|
a_id_valid: a_id > 0
|
|
do
|
|
id := a_id
|
|
name := {STRING_32} ""
|
|
initialize
|
|
ensure
|
|
id_set: id = a_id
|
|
status_not_active: status = not_active
|
|
end
|
|
|
|
initialize
|
|
do
|
|
create creation_date.make_now_utc
|
|
mark_not_active
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
id: INTEGER_64
|
|
-- Unique id.
|
|
|
|
name: READABLE_STRING_32
|
|
-- User name.
|
|
|
|
password: detachable READABLE_STRING_32
|
|
-- User password (plain text password).
|
|
|
|
hashed_password: detachable READABLE_STRING_8
|
|
-- Hashed user password.
|
|
|
|
email: detachable READABLE_STRING_32
|
|
-- User email.
|
|
|
|
profile: detachable CMS_USER_PROFILE
|
|
-- User profile.
|
|
|
|
creation_date: DATE_TIME
|
|
-- Creation date.
|
|
|
|
last_login_date: detachable DATE_TIME
|
|
-- User last login.
|
|
|
|
status: INTEGER
|
|
-- Associated status for the current user.
|
|
-- default: not_active
|
|
-- active
|
|
-- trashed
|
|
|
|
feature -- Access: helper
|
|
|
|
utf_8_name: STRING_8
|
|
-- UTF-8 version of `name'.
|
|
local
|
|
utf: UTF_CONVERTER
|
|
do
|
|
Result := utf.utf_32_string_to_utf_8_string_8 (name)
|
|
end
|
|
|
|
feature -- Roles
|
|
|
|
roles: detachable LIST [CMS_USER_ROLE]
|
|
-- If set, list of roles for current user.
|
|
|
|
feature -- Access: data
|
|
|
|
data: detachable STRING_TABLE [detachable ANY]
|
|
-- Additional data.
|
|
|
|
data_item (k: READABLE_STRING_GENERAL): detachable ANY
|
|
-- Additional item data associated with key `k'.
|
|
do
|
|
if attached data as l_data then
|
|
Result := l_data.item (k)
|
|
end
|
|
end
|
|
|
|
feature -- Status report
|
|
|
|
has_id: BOOLEAN
|
|
do
|
|
Result := id > 0
|
|
end
|
|
|
|
has_email: BOOLEAN
|
|
do
|
|
Result := attached email as e and then not e.is_empty
|
|
end
|
|
|
|
debug_output: STRING_32
|
|
do
|
|
create Result.make_from_string (name)
|
|
if has_id then
|
|
Result.append_character (' ')
|
|
Result.append_character ('<')
|
|
Result.append_integer_64 (id)
|
|
Result.append_character ('>')
|
|
end
|
|
end
|
|
|
|
same_as (other: detachable CMS_USER): BOOLEAN
|
|
-- Is Current same as `other'?
|
|
do
|
|
Result := other /= Void and then id = other.id
|
|
end
|
|
|
|
is_active: BOOLEAN
|
|
-- is the current user active?
|
|
do
|
|
Result := status = {CMS_USER}.active
|
|
end
|
|
|
|
feature -- Change element
|
|
|
|
set_id (a_id: like id)
|
|
-- Set `id' with `a_id'.
|
|
do
|
|
id := a_id
|
|
ensure
|
|
id_set: id = a_id
|
|
end
|
|
|
|
set_name (n: like name)
|
|
-- Set `name' with `n'.
|
|
do
|
|
name := n
|
|
ensure
|
|
name_set: name = n
|
|
end
|
|
|
|
set_password (a_password: like password)
|
|
-- Set `password' with `a_password'.
|
|
do
|
|
password := a_password
|
|
hashed_password := Void
|
|
ensure
|
|
password_set: password = a_password
|
|
hashed_password_void: hashed_password = Void
|
|
end
|
|
|
|
set_hashed_password (a_hashed_password: like hashed_password)
|
|
-- Set `hashed_password' with `a_hashed_password'.
|
|
do
|
|
hashed_password := a_hashed_password
|
|
password := Void
|
|
ensure
|
|
password_void: password = Void
|
|
hashed_password_set: hashed_password = a_hashed_password
|
|
end
|
|
|
|
set_email (a_email: like email)
|
|
-- Set `email' with `a_email'.
|
|
do
|
|
email := a_email
|
|
ensure
|
|
email_set: email = a_email
|
|
end
|
|
|
|
set_profile (prof: like profile)
|
|
-- Set `profile' with `prof'.
|
|
do
|
|
profile := prof
|
|
ensure
|
|
profile_set: profile = prof
|
|
end
|
|
|
|
set_profile_item (k: READABLE_STRING_8; v: READABLE_STRING_8)
|
|
local
|
|
prof: like profile
|
|
do
|
|
prof := profile
|
|
if prof = Void then
|
|
create prof.make
|
|
profile := prof
|
|
end
|
|
prof.force (v, k)
|
|
end
|
|
|
|
set_last_login_date (dt: like last_login_date)
|
|
do
|
|
last_login_date := dt
|
|
end
|
|
|
|
set_last_login_date_now
|
|
do
|
|
set_last_login_date (create {DATE_TIME}.make_now_utc)
|
|
end
|
|
|
|
feature -- Element change: roles
|
|
|
|
set_roles (lst: like roles)
|
|
-- Set `roles' to `lst'.
|
|
do
|
|
roles := lst
|
|
end
|
|
|
|
feature -- Change element: data
|
|
|
|
set_data_item (k: READABLE_STRING_GENERAL; d: like data_item)
|
|
-- Associate data item `d' with key `k'.
|
|
local
|
|
l_data: like data
|
|
do
|
|
l_data := data
|
|
if l_data = Void then
|
|
create l_data.make (1)
|
|
data := l_data
|
|
end
|
|
l_data.force (d, k)
|
|
end
|
|
|
|
remove_data_item (k: READABLE_STRING_GENERAL)
|
|
-- Remove data item associated with key `k'.
|
|
do
|
|
if attached data as l_data then
|
|
l_data.remove (k)
|
|
end
|
|
end
|
|
|
|
feature -- Status change
|
|
|
|
mark_not_active
|
|
-- Set status to not_active
|
|
do
|
|
set_status (not_active)
|
|
ensure
|
|
status_not_active: status = not_active
|
|
end
|
|
|
|
mark_active
|
|
-- Set status to active.
|
|
do
|
|
set_status (active)
|
|
ensure
|
|
status_active: status = active
|
|
end
|
|
|
|
mark_trashed
|
|
-- Set status to trashed.
|
|
do
|
|
set_status (trashed)
|
|
ensure
|
|
status_trash: status = trashed
|
|
end
|
|
|
|
set_status (a_status: like status)
|
|
-- Assign `status' with `a_status'.
|
|
do
|
|
status := a_status
|
|
ensure
|
|
status_set: status = a_status
|
|
end
|
|
|
|
|
|
feature -- User status
|
|
|
|
not_active: INTEGER = 0
|
|
-- The user is not active.
|
|
|
|
active: INTEGER = 1
|
|
-- The user is active
|
|
|
|
Trashed: INTEGER = -1
|
|
-- The user is trashed (soft delete), ready to be deleted/destroyed from storage.
|
|
|
|
invariant
|
|
|
|
id_or_name_set: id > 0 or else not name.is_whitespace
|
|
|
|
note
|
|
copyright: "2011-2016, Javier Velilla, Jocelyn Fiat, Eiffel Software and others"
|
|
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
|
end
|