ModUser takes uid|login, can change phone and email

This commit is contained in:
Philippe PITTOLI 2020-02-09 15:47:44 +01:00
parent f66a08ff60
commit b6cbe6c84a
2 changed files with 23 additions and 6 deletions

View File

@ -220,11 +220,13 @@ class AuthD::Request
class ModUser < Request
property shared_key : String
property uid : Int32
property user : Int32 | String
property password : String?
property email : String?
property phone : String?
property avatar : String?
initialize :shared_key, :uid
initialize :shared_key, :user
end
class Request::Register < Request
@ -433,10 +435,12 @@ module AuthD
end
end
def mod_user(uid : Int32, password : String? = nil, avatar : String? = nil) : Bool | Exception
request = Request::ModUser.new @key, uid
def mod_user(uid_or_login : Int32 | String, password : String? = nil, email : String? = nil, phone : String? = nil, avatar : String? = nil) : Bool | Exception
request = Request::ModUser.new @key, uid_or_login
request.password = password if password
request.email = email if email
request.phone = phone if phone
request.avatar = avatar if avatar
send request

View File

@ -148,7 +148,12 @@ class AuthD::Service
return Response::Error.new "invalid authentication key"
end
user = @users_per_uid.get? request.uid.to_s
uid_or_login = request.user
user = if uid_or_login.is_a? Int32
@users_per_uid.get? uid_or_login.to_s
else
@users_per_login.get? uid_or_login
end
unless user
return Response::Error.new "user not found"
@ -158,9 +163,17 @@ class AuthD::Service
user.password_hash = hash_password s
end
request.email.try do |email|
user.contact.email = email
end
request.phone.try do |phone|
user.contact.phone = phone
end
@users_per_uid.update user.uid.to_s, user
Response::UserEdited.new request.uid
Response::UserEdited.new user.uid
when Request::Register
if ! @registrations_allowed
return Response::Error.new "registrations not allowed"