Gli header Accept-Language dalle app e i fix di padding/menu sul web chiudono il giro password-policy; il doc guida il lavoro su Mac. Co-authored-by: Cursor <cursoragent@cursor.com>
61 lines
1.8 KiB
Ruby
61 lines
1.8 KiB
Ruby
module Api
|
|
module V1
|
|
class AccountsController < ApplicationController
|
|
def show
|
|
render json: user_json(current_user)
|
|
end
|
|
|
|
def update
|
|
name = params[:name].to_s.strip
|
|
if name.blank?
|
|
return render json: { error: I18n.t("flash.accounts.name_required") }, status: :unprocessable_entity
|
|
end
|
|
|
|
if current_user.update(name: name)
|
|
render json: user_json(current_user)
|
|
else
|
|
render json: { error: current_user.errors.full_messages.join(", ") }, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
def password
|
|
result = Users::ChangePassword.call(
|
|
user: current_user,
|
|
current_password: params[:current_password],
|
|
password: params[:password],
|
|
password_confirmation: params[:password_confirmation]
|
|
)
|
|
|
|
unless result.ok?
|
|
return render json: { error: password_error_message(result.error) }, status: :unprocessable_entity
|
|
end
|
|
|
|
render json: { message: I18n.t("flash.accounts.password_updated") }
|
|
end
|
|
|
|
private
|
|
|
|
def user_json(user)
|
|
{
|
|
id: user.id,
|
|
email: user.email,
|
|
name: user.name,
|
|
role: user.role
|
|
}
|
|
end
|
|
|
|
def password_error_message(code)
|
|
case code
|
|
when :current_incorrect then I18n.t("flash.accounts.password_current_incorrect")
|
|
when :too_short then I18n.t("flash.accounts.password_too_short")
|
|
when :too_long then I18n.t("flash.accounts.password_too_long")
|
|
when :too_weak then I18n.t("flash.accounts.password_too_weak")
|
|
when :same_as_current then I18n.t("flash.accounts.password_same_as_current")
|
|
when :mismatch then I18n.t("flash.accounts.password_mismatch")
|
|
else I18n.t("flash.accounts.password_update_failed")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|