본문 바로가기
프로그래밍/Web

Laravel Jetstream Profile Management

by 사악신 2024. 1. 6.

라라벨 제트스트림의 프로필 관리 기능은 사용자가 오른쪽 상단의 사용자 프로필 탐색 드롭다운 메뉴를 사용하여 접근할 수 있습니다. 제트스트림은 사용자가 이름, 이메일 주소 및 선택적으로 프로필 사진을 업데이트할 수 있도록 뷰와 액션을 구조화합니다.

 

 

Actions

대부분의 제트스트림 기능과 마찬가지로, 프로필 업데이트 요청을 충족하기 위해 실행되는 로직은 애플리케이션 내의 액션 클래스에서 찾을 수 있습니다. 구체적으로, 사용자가 프로필을 업데이트할 때 `App\Actions\Fortify\UpdateUserProfileInformation` 클래스가 호출됩니다. 이 액션은 입력을 검증하고 사용자의 프로필 정보를 업데이트하는 책임이 있습니다.

따라서, 이 정보의 관리에 대해 애플리케이션에서 하고자 하는 모든 사용자 정의는 이 클래스에서 이루어져야 합니다. 호출될 때, 액션은 현재 인증된 $user와 들어오는 요청에서 모든 입력을 포함하는 $input 배열을 받습니다. 여기에는 해당하는 경우 업데이트된 프로필 사진도 포함됩니다.

 

사용자에 대한 추가 정보를 관리해야 하는 경우, 제공된 "Profile Information" 카드를 수정하는 것에만 제한되지 않습니다. 사용자의 프로필 대시보드 내에 필요한 만큼 많은 추가 UI 요소와 양식을 추가할 수 있습니다.

Views/Pages

Livewire 스택을 사용하는 경우, 사용자의 프로필 정보 양식은 `resources/views/profile/update-profile-information-form.blade.php` Blade 템플릿을 사용하여 표시됩니다. Inertia 스택을 사용하는 경우, 이 뷰는 `resources/js/Pages/Profile/UpdateProfileInformationForm.vue` 템플릿을 사용하여 표시됩니다.

이러한 각 템플릿은 전체 인증된 사용자 객체를 받게 되므로, 필요에 따라 이 양식에 추가 필드를 추가할 수 있습니다. 양식에 추가된 추가 입력들은 `UpdateUserProfileInformation` 액션에 전달된 $input 배열에 포함될 것입니다.

Profile Photos

Enabling Profile Photos

사용자가 사용자 정의 프로필 사진을 업로드할 수 있도록 허용하려면, 애플리케이션의 `config/jetstream.php` 설정 파일에서 이 기능을 활성화해야 합니다. 이 기능을 활성화하려면, 이 파일 내의 features 구성 항목에서 해당 기능 항목의 주석 처리를 해제하기만 하면 됩니다:

 

use Laravel\Jetstream\Features;

'features' => [
    Features::profilePhotos(),
    Features::api(),
    Features::teams(),
],

 

프로필 사진 기능을 활성화한 후에는 `storage:link` 아티즌 명령을 실행해야 합니다. 이 명령은 애플리케이션의 public 디렉터리에 심볼릭 링크를 생성하여 사용자의 이미지가 애플리케이션에 의해 제공될 수 있게 합니다. 이 명령에 대한 정보는 라라벨 파일 시스템 문서를 참조하세요:

php artisan storage:link

Managing Profile Photos

제트스트림의 프로필 사진 기능은 제트스트림 설치 중 자동으로 `App\Models\User` 클래스에 첨부되는 `Laravel\Jetstream\HasProfilePhoto` 트레이트에 의해 지원됩니다.

이 트레이트에는 `updateProfilePhoto`, `getProfilePhotoUrlAttribute`, `defaultProfilePhotoUrl`, `profilePhotoDisk`와 같은 메소드가 포함되어 있으며, 이들의 동작을 사용자 정의할 필요가 있는 경우 모두 자신의 `App\Models\User` 클래스에서 덮어쓸 수 있습니다. 이 트레이트의 소스 코드를 통해 애플리케이션에 제공되는 기능을 완전히 이해할 수 있도록 권장됩니다.

`updateProfilePhoto` 메소드는 프로필 사진을 저장하는 주요 메소드로, 애플리케이션의 `App\Actions\Fortify\UpdateUserProfileInformation` 액션 클래스에 의해 호출됩니다.

기본적으로 제트스트림 애플리케이션이 라라벨 베이퍼(Laravel Vapor) 내에서 실행될 때 s3 디스크가 프로필 사진을 저장하는 데 사용됩니다.

 

Account Deletion

프로필 관리 화면에는 사용자가 애플리케이션 계정을 삭제할 수 있는 액션 패널도 포함되어 있습니다. 사용자가 계정 삭제를 선택하면 `App\Actions\Jetstream\DeleteUser` 액션 클래스가 호출됩니다. 이 클래스 내에서 애플리케이션의 계정 삭제 로직을 사용자 정의할 수 있습니다.

계정 삭제 기능은 애플리케이션의 `config/jetstream.php` 설정 파일에서 해당 기능을 제거함으로써 비활성화할 수 있습니다:

use Laravel\Jetstream\Features;

'features' => [
    Features::termsAndPrivacyPolicy(),
    Features::profilePhotos(),
    Features::api(),
    Features::teams(),
    // Features::accountDeletion(),
],

 

반응형

'프로그래밍 > Web' 카테고리의 다른 글

Laravel Jetstream Password Confirmation  (0) 2024.01.08
Laravel Jetstream Password Update  (0) 2024.01.08
Laravel Jetstream Registration  (1) 2024.01.06
Laravel Jetstream Authentication  (0) 2024.01.06
Laravel Jetstream API  (0) 2024.01.06

댓글