Update user storage,

Clean code
This commit is contained in:
jvelilla
2015-07-30 11:06:03 -03:00
parent 3ebffad3d6
commit 1ef4025caa
6 changed files with 161 additions and 182 deletions

View File

@@ -75,6 +75,16 @@ feature -- Access
deferred
end
users_count: INTEGER
-- Number of users
deferred
end
recent_users (a_lower: INTEGER; a_count: INTEGER): LIST [CMS_USER]
-- List of recent `a_count' users with an offset of `lower'.
deferred
end
feature -- Change: user
save_user (a_user: CMS_USER)
@@ -101,6 +111,14 @@ feature -- Change: user
deferred
end
delete_user (a_user: CMS_USER)
-- Delete user `a_user'.
require
has_id: a_user.has_id
deferred
end
feature -- Access: roles and permissions
-- user_has_permission (u: detachable CMS_USER; s: detachable READABLE_STRING_8): BOOLEAN
@@ -160,6 +178,30 @@ feature -- Change: roles and permissions
deferred
end
unassign_role_from_user (a_role: CMS_USER_ROLE; a_user: CMS_USER)
-- Unassign user_role to user
require
a_user.has_id
a_role.has_id
deferred
end
assign_role_to_user (a_role: CMS_USER_ROLE; a_user: CMS_USER)
-- Assign user_role to user
require
a_user.has_id
a_role.has_id
deferred
end
delete_role (a_role: CMS_USER_ROLE)
-- Remove role `a_role'.
require
a_role.has_id
deferred
end
feature -- Change: User activation
save_activation (a_token: READABLE_STRING_32; a_id: INTEGER_64)

View File

@@ -46,6 +46,17 @@ feature -- Access: user
do
end
users_count: INTEGER
--<Precursor>
do
end
recent_users (a_lower: INTEGER; a_count: INTEGER): LIST [CMS_USER]
-- <Precursor>
do
create {ARRAYED_LIST[CMS_USER]} Result.make (0)
end
feature -- Change: user
new_user (a_user: CMS_USER)
@@ -60,6 +71,12 @@ feature -- Change: user
end
delete_user (a_user: CMS_USER)
-- Delete user `a_user'.
do
end
feature -- Access: roles and permissions
user_role_by_id (a_id: like {CMS_USER_ROLE}.id): detachable CMS_USER_ROLE
@@ -88,6 +105,19 @@ feature -- Change: roles and permissions
do
end
unassign_role_from_user (a_user_role: CMS_USER_ROLE; a_user: CMS_USER)
do
end
assign_role_to_user (a_user_role: CMS_USER_ROLE; a_user: CMS_USER)
do
end
delete_role (a_role: CMS_USER_ROLE)
-- <Precursor>
do
end
feature -- Change: User activation
save_activation (a_token: READABLE_STRING_32; a_id: INTEGER_64)

View File

@@ -20,10 +20,10 @@ feature -- Access: user
has_user: BOOLEAN
-- Has any user?
do
Result := user_count > 0
Result := users_count > 0
end
user_count: INTEGER
users_count: INTEGER
-- Number of items users.
do
error_handler.reset
@@ -163,6 +163,31 @@ feature -- Access: user
end
recent_users (a_lower: INTEGER; a_count: INTEGER): LIST [CMS_USER]
-- <Precursor>
local
l_parameters: STRING_TABLE [detachable ANY]
do
create {ARRAYED_LIST [CMS_USER]} Result.make (0)
error_handler.reset
write_information_log (generator + ".recent_users")
from
create l_parameters.make (2)
l_parameters.put (a_count, "rows")
l_parameters.put (a_lower, "offset")
sql_query (sql_select_recent_users, l_parameters)
sql_start
until
sql_after
loop
if attached fetch_user as l_user then
Result.force (l_user)
end
sql_forth
end
end
feature -- Change: user
new_user (a_user: CMS_USER)
@@ -255,6 +280,20 @@ feature -- Change: user
end
end
delete_user (a_user: CMS_USER)
-- Delete user `a_user'.
local
l_parameters: STRING_TABLE [detachable ANY]
do
error_handler.reset
sql_begin_transaction
write_information_log (generator + ".delete_user")
create l_parameters.make (1)
l_parameters.put (a_user.id, "uid")
sql_change (sql_delete_user, l_parameters)
sql_commit_transaction
end
update_user_roles (a_user: CMS_USER)
-- Update roles of `a_user'
require
@@ -311,9 +350,6 @@ feature -- Change: user
end
assign_role_to_user (a_role: CMS_USER_ROLE; a_user: CMS_USER)
require
a_user.has_id
a_role.has_id
local
l_parameters: STRING_TABLE [detachable ANY]
do
@@ -324,9 +360,6 @@ feature -- Change: user
end
unassign_role_from_user (a_role: CMS_USER_ROLE; a_user: CMS_USER)
require
a_user.has_id
a_role.has_id
local
l_parameters: STRING_TABLE [detachable ANY]
do
@@ -502,12 +535,20 @@ feature -- Change: roles and permissions
-- FIXME: check if this is non set permissions,or none ...
if l_existing_role /= Void then
l_permissions := l_existing_role.permissions
fill_user_role (l_existing_role)
-- fill_user_role (l_existing_role)
end
if l_permissions = Void or else l_permissions.is_empty then
l_permissions := role_permissions_by_id (a_user_role.id)
end
a_user_role.permissions.compare_objects
across l_permissions as ic
loop
if not a_user_role.permissions.has (ic.item) then
unset_permission_for_role_id (ic.item, a_user_role.id)
end
end
across
a_user_role.permissions as ic
loop
@@ -531,12 +572,12 @@ feature -- Change: roles and permissions
set_permission_for_role_id (p, a_user_role.id)
end
end
-- Remove other
across
l_permissions as ic
loop
unset_permission_for_role_id (ic.item, a_user_role.id)
end
-- -- Remove other
-- across
-- l_permissions as ic
-- loop
-- unset_permission_for_role_id (ic.item, a_user_role.id)
-- end
end
else
create l_parameters.make (1)
@@ -593,6 +634,22 @@ feature -- Change: roles and permissions
end
delete_role (a_role: CMS_USER_ROLE)
-- <Precursor>
local
l_parameters: STRING_TABLE [detachable ANY]
do
error_handler.reset
sql_begin_transaction
write_information_log (generator + ".delete_role")
create l_parameters.make (1)
l_parameters.put (a_role.id, "rid")
sql_change (sql_delete_role_permissions_by_role_id, l_parameters)
sql_change (sql_delete_role_by_id, l_parameters)
sql_commit_transaction
end
feature -- Access: User activation
activation_elapsed_time (a_token: READABLE_STRING_32): INTEGER_32
@@ -800,6 +857,9 @@ feature {NONE} -- Sql Queries: USER
Select_user_by_name: STRING = "SELECT * FROM users WHERE name =:name;"
-- Retrieve user by name if exists.
Sql_select_recent_users: STRING = "SELECT * FROM users ORDER BY uid DESC, created DESC LIMIT :rows OFFSET :offset ;"
-- Retrieve recent users
Select_user_by_email: STRING = "SELECT * FROM users WHERE email =:email;"
-- Retrieve user by email if exists.
@@ -812,6 +872,8 @@ feature {NONE} -- Sql Queries: USER
sql_update_user: STRING = "UPDATE users SET name=:name, password=:password, salt=:salt, email=:email, status=:status WHERE uid=:uid;"
-- SQL update to update an existing user.
sql_delete_user: STRING = "DELETE FROM users WHERE uid=:uid;"
feature {NONE} -- Sql Queries: USER ROLE
sql_last_insert_user_role_id: STRING = "SELECT MAX(rid) FROM roles;"
@@ -849,6 +911,10 @@ feature {NONE} -- Sql Queries: USER ROLE
select_role_permissions_by_role_id: STRING = "SELECT permission, module FROM role_permissions WHERE rid=:rid;"
-- User role permissions for role id :rid;
sql_delete_role_permissions_by_role_id: STRING = "DELETE FROM role_permissions WHERE rid=:rid;"
sql_delete_role_by_id: STRING = "DELETE FROM roles WHERE rid=:rid;"
feature {NONE} -- Sql Queries: USER ACTIVATION
sql_insert_activation: STRING = "INSERT INTO users_activations (token, uid, created) VALUES (:token, :uid, :utc_date);"