60 lines
1.7 KiB
PHP
60 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class ProfileService
|
|
{
|
|
/**
|
|
* 프로필 정보 수정 (이름, 전화번호)
|
|
* 이름은 최고관리자만 수정 가능
|
|
*/
|
|
public function updateProfile(User $user, array $data): bool
|
|
{
|
|
// 최고관리자만 이름 수정 가능
|
|
if ($user->isSuperAdmin() && isset($data['name'])) {
|
|
$user->name = $data['name'];
|
|
}
|
|
|
|
$user->phone = $data['phone'] ?? null;
|
|
$user->updated_by = $user->id;
|
|
|
|
return $user->save();
|
|
}
|
|
|
|
/**
|
|
* 비밀번호 변경
|
|
*/
|
|
public function changePassword(User $user, string $currentPassword, string $newPassword): array
|
|
{
|
|
// 현재 비밀번호 확인
|
|
if (! Hash::check($currentPassword, $user->password)) {
|
|
return [
|
|
'success' => false,
|
|
'message' => '현재 비밀번호가 일치하지 않습니다.',
|
|
];
|
|
}
|
|
|
|
// 새 비밀번호가 현재 비밀번호와 동일한지 확인
|
|
if (Hash::check($newPassword, $user->password)) {
|
|
return [
|
|
'success' => false,
|
|
'message' => '새 비밀번호는 현재 비밀번호와 다르게 설정해주세요.',
|
|
];
|
|
}
|
|
|
|
// 비밀번호 업데이트 + 비밀번호 변경 필요 플래그 해제
|
|
$user->password = Hash::make($newPassword);
|
|
$user->must_change_password = false;
|
|
$user->updated_by = $user->id;
|
|
$user->save();
|
|
|
|
return [
|
|
'success' => true,
|
|
'message' => '비밀번호가 변경되었습니다.',
|
|
];
|
|
}
|
|
}
|