Added possibility to change its own username.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
note
|
||||
description: "Summary description for {CMS_USER_STORAGE_I}."
|
||||
date: "$Date: 2015-01-27 19:15:02 +0100 (mar., 27 janv. 2015) $"
|
||||
revision: "$Revision: 96542 $"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
deferred class
|
||||
CMS_USER_STORAGE_I
|
||||
@@ -104,6 +104,13 @@ feature -- Change: user
|
||||
deferred
|
||||
end
|
||||
|
||||
update_username (a_user: CMS_USER; a_new_username: READABLE_STRING_32)
|
||||
-- Update username of `a_user' to `a_new_username`.
|
||||
require
|
||||
has_id: a_user.has_id
|
||||
deferred
|
||||
end
|
||||
|
||||
update_user (a_user: CMS_USER)
|
||||
-- Save user `a_user'.
|
||||
require
|
||||
@@ -282,7 +289,6 @@ feature -- New Temp User
|
||||
deferred
|
||||
end
|
||||
|
||||
|
||||
note
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
note
|
||||
description: "Summary description for {CMS_USER_STORAGE_NULL}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
@@ -65,12 +64,15 @@ feature -- Change: user
|
||||
a_user.set_id (1)
|
||||
end
|
||||
|
||||
update_username (a_user: CMS_USER; a_new_username: READABLE_STRING_32)
|
||||
do
|
||||
end
|
||||
|
||||
update_user (a_user: CMS_USER)
|
||||
-- Update user `a_user'.
|
||||
do
|
||||
end
|
||||
|
||||
|
||||
delete_user (a_user: CMS_USER)
|
||||
-- Delete user `a_user'.
|
||||
do
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
note
|
||||
description: "Summary description for {CMS_USER_STORAGE_SQL_I}."
|
||||
date: "$Date: 2015-02-13 13:08:13 +0100 (ven., 13 févr. 2015) $"
|
||||
revision: "$Revision: 96616 $"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
deferred class
|
||||
CMS_USER_STORAGE_SQL_I
|
||||
@@ -242,6 +242,58 @@ feature -- Change: user
|
||||
end
|
||||
end
|
||||
|
||||
update_username (a_user: CMS_USER; a_new_username: READABLE_STRING_32)
|
||||
-- Update username of `a_user' to `a_new_username`.
|
||||
local
|
||||
l_parameters: STRING_TABLE [detachable ANY]
|
||||
l_password_salt, l_password_hash: detachable READABLE_STRING_8
|
||||
l_security: SECURITY_PROVIDER
|
||||
do
|
||||
error_handler.reset
|
||||
if attached a_user.password as l_password then
|
||||
-- New password!
|
||||
create l_security
|
||||
l_password_salt := l_security.salt
|
||||
l_password_hash := l_security.password_hash (l_password, l_password_salt)
|
||||
else
|
||||
-- Existing hashed password
|
||||
l_password_hash := a_user.hashed_password
|
||||
l_password_salt := user_salt (a_user.name)
|
||||
end
|
||||
if
|
||||
l_password_hash /= Void and l_password_salt /= Void and
|
||||
attached a_user.email as l_email
|
||||
then
|
||||
sql_begin_transaction
|
||||
|
||||
write_information_log (generator + ".update_user")
|
||||
create l_parameters.make (7)
|
||||
l_parameters.put (a_user.id, "uid")
|
||||
l_parameters.put (a_new_username, "name")
|
||||
l_parameters.put (l_password_hash, "password")
|
||||
l_parameters.put (l_password_salt, "salt")
|
||||
l_parameters.put (l_email, "email")
|
||||
l_parameters.put (a_user.status, "status")
|
||||
l_parameters.put (a_user.last_login_date, "signed")
|
||||
|
||||
sql_modify (sql_update_user, l_parameters)
|
||||
sql_finalize
|
||||
if not error_handler.has_error then
|
||||
a_user.set_name (a_new_username)
|
||||
update_user_roles (a_user)
|
||||
end
|
||||
if not error_handler.has_error then
|
||||
sql_commit_transaction
|
||||
else
|
||||
sql_rollback_transaction
|
||||
end
|
||||
sql_finalize
|
||||
else
|
||||
-- set error
|
||||
error_handler.add_custom_error (-1, "bad request" , "Missing password or email")
|
||||
end
|
||||
end
|
||||
|
||||
update_user (a_user: CMS_USER)
|
||||
-- Save user `a_user'.
|
||||
local
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
note
|
||||
description: "API providing user related features."
|
||||
date: "$Date: 2015-02-13 13:08:13 +0100 (ven., 13 févr. 2015) $"
|
||||
revision: "$Revision: 96616 $"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
CMS_USER_API
|
||||
@@ -14,6 +14,34 @@ inherit
|
||||
create
|
||||
make
|
||||
|
||||
feature -- Validation
|
||||
|
||||
is_valid_username (a_name: READABLE_STRING_32): BOOLEAN
|
||||
local
|
||||
c: CHARACTER_32
|
||||
do
|
||||
if a_name.is_empty or a_name.is_whitespace then
|
||||
Result := False
|
||||
elseif a_name[1].is_space then
|
||||
Result := False
|
||||
elseif a_name[a_name.count].is_space then
|
||||
Result := False
|
||||
else
|
||||
Result := True
|
||||
across
|
||||
a_name as ic
|
||||
until
|
||||
not Result
|
||||
loop
|
||||
c := ic.item
|
||||
if c.is_alpha_numeric or c = '-' or c = '_' then
|
||||
else
|
||||
Result := False
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Access: user
|
||||
|
||||
user_by_id (a_id: like {CMS_USER}.id): detachable CMS_USER
|
||||
@@ -77,6 +105,18 @@ feature -- Change User
|
||||
end
|
||||
end
|
||||
|
||||
update_username (a_user: CMS_USER; a_new_username: READABLE_STRING_32)
|
||||
-- Update username of `a_user' to `a_new_username'.
|
||||
require
|
||||
has_id: a_user.has_id
|
||||
valid_user_name: is_valid_username (a_new_username)
|
||||
user_by_name (a_new_username) = Void
|
||||
do
|
||||
reset_error
|
||||
storage.update_username (a_user, a_new_username)
|
||||
error_handler.append (storage.error_handler)
|
||||
end
|
||||
|
||||
update_user (a_user: CMS_USER)
|
||||
-- Update user `a_user'.
|
||||
require
|
||||
|
||||
Reference in New Issue
Block a user