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

Laravel Jetstream Registration

by 사악신 2024. 1. 6.

물론, 누군가가 애플리케이션을 사용하기 전에 계정을 생성해야 합니다. 다행히도, 제트스트림은 사용자 등록을 처리하는 등록 뷰와 해당 액션을 제공하여, 애플리케이션 구축에 집중할 수 있도록 합니다.

 

 

Actions

대부분의 제트스트림 기능과 마찬가지로, 등록 요청을 충족하기 위해 실행되는 로직은 애플리케이션 내의 액션 클래스에서 찾을 수 있습니다. 액션은 제트스트림 또는 포티파이 기능과 관련된 단일 작업을 수행하는 세부적인 클래스입니다.

구체적으로, 사용자가 애플리케이션에 등록할 때 `App\Actions\Fortify\CreateNewUser` 클래스가 호출됩니다. 이 액션은 들어오는 요청 입력을 검증하고 사용자를 생성하는 책임이 있습니다. 따라서 사용자 생성 로직에 대해 하고자 하는 모든 사용자 정의는 이 클래스에서 이루어져야 합니다. 이 액션은 들어오는 요청의 모든 입력을 포함하는 $input 배열을 받습니다.

Password Validation Rules

`App\Actions\Fortify\CreateNewUser`, `App\Actions\Fortify\ResetUserPassword`, 그리고 `App\Actions\Fortify\UpdateUserPassword` 액션은 모두 `App\Actions\Fortify\PasswordValidationRules` 트레이트를 사용합니다.

알 수 있듯이, `App\Actions\Fortify\PasswordValidationRules` 트레이트는 사용자 정의 `Laravel\Fortify\Rules\Password` 검증 규칙 객체를 사용합니다. 이 객체를 사용하면 애플리케이션의 비밀번호 요구 사항을 쉽게 사용자 정의할 수 있습니다. 기본적으로 이 규칙은 최소 8자의 비밀번호를 요구합니다. 그러나 다음 메소드를 사용하여 비밀번호 요구 사항을 사용자 정의할 수 있습니다:

use Laravel\Fortify\Rules\Password;

// Require at least 10 characters...
(new Password)->length(10)

// Require at least one uppercase character...
(new Password)->requireUppercase()

// Require at least one numeric character...
(new Password)->requireNumeric()

// Require at least one special character...
(new Password)->requireSpecialCharacter()

 

물론, 이 메소드들은 애플리케이션의 비밀번호 검증 규칙을 정의하기 위해 연쇄적으로 사용될 수 있습니다:

(new Password)->length(10)->requireSpecialCharacter()

 

Views/Pages

Livewire 스택을 사용하는 경우, 등록 뷰는 `resources/views/auth/register.blade.php` Blade 템플릿을 사용하여 표시됩니다. Inertia 스택을 사용하는 경우, 이 뷰는 `resources/js/Pages/Auth/Register.vue` 템플릿을 사용하여 표시됩니다. 이 페이지에 추가한 추가 필드는 `App\Actions\Fortify\CreateNewUser` 액션에 전달된 $input 배열을 통해 사용할 수 있습니다.

 

Customizing The Registration View

라라벨 제트스트림은 애플리케이션의 등록 화면에 적절한 뷰를 자동으로 렌더링합니다. 그러나 때로는 뷰/페이지가 어떻게 렌더링되는지 사용자 정의하고 싶을 수 있습니다.

포티파이의 인증 뷰 렌더링 로직은 `Laravel\Fortify\Fortify` 클래스를 통해 사용 가능한 적절한 메소드를 사용하여 사용자 정의할 수 있습니다. 일반적으로 이 메소드는 애플리케이션의 `App\Providers\JetstreamServiceProvider` 클래스의 `boot` 메소드에서 호출해야 합니다.

use Laravel\Fortify\Fortify;

/**
 * Bootstrap any application services.
 */
public function boot(): void
{
    Fortify::registerView(function () {
        return view('auth.register');
    });
}

 

Customizing Inertia Registration Views

 

애플리케이션이 Inertia 스택을 사용하는 경우, 뷰 사용자 정의 클로저에서 Inertia 페이지를 반환할 수 있습니다:

use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
use Laravel\Fortify\Fortify;

Fortify::registerView(function () {
    return Inertia::render('Auth/Register');
});

Requiring Terms Of Service/Privacy Policy Approval

많은 애플리케이션은 사용자가 등록하는 동안 이용 약관/개인정보 보호정책을 수락하도록 요구합니다. 제트스트림은 이러한 요구 사항을 자체 애플리케이션에 쉽게 활성화할 수 있을 뿐만 아니라 Markdown을 사용하여 이러한 문서를 작성하는 편리한 방법을 제공합니다.

시작하려면 애플리케이션의 `config/jetstream.php` 설정 파일에서 이 기능을 활성화하세요:

 

use Laravel\Jetstream\Features;

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

 

다음으로, 애플리케이션의 `resources/markdown/terms.md` 및 `resources/markdown/policy.md` 파일을 수정하여 이용 약관/개인정보 보호정책 문서를 작성할 수 있습니다.

등록하는 동안, 제트스트림은 자동으로 사용자에게 이 문서들을 승인하도록 요청할 것입니다. 사용자가 문서를 보기 위한 링크를 클릭하면, 제트스트림은 Tailwind의 타이포그래피 플러그인을 사용하여 Markdown을 아름답게 형식화된 산문으로 렌더링할 것입니다.

 

Terms & Policy Localization

서비스 이용 약관과 개인정보 보호정책의 지역화된 버전을 제공하려면, 원하는 로케일을 접미사로 사용하여 파일 이름을 `terms.es.md`와 같이 지정할 수 있습니다. 제트스트림은 애플리케이션에 구성된 현재 로케일을 기반으로 파일의 올바른 버전을 자동으로 제공할 것입니다.

 

Email Verification

라라벨 제트스트림은 새로 등록된 사용자가 이메일 주소를 확인해야 한다는 요구 사항을 지원합니다. 그러나 이 기능은 기본적으로 비활성화되어 있습니다. 이 기능을 활성화하려면 애플리케이션의 `config/fortify.php` 설정 파일의 features 구성 항목에서 관련 항목의 주석 처리를 해제해야 합니다:

 

use Laravel\Fortify\Features;

'features' => [
    Features::registration(),
    Features::resetPasswords(),
    Features::emailVerification(),
    Features::updateProfileInformation(),
    Features::updatePasswords(),
    Features::twoFactorAuthentication(),
],

 

다음으로, `App\Models\User` 클래스가 `Illuminate\Contracts\Auth\MustVerifyEmail` 인터페이스를 구현하고 있는지 확인해야 합니다. 이 인터페이스는 이미 이 모델에 가져와져 있습니다:

 

use Illuminate\Contracts\Auth\MustVerifyEmail;

class User extends Authenticatable implements MustVerifyEmail
{
    // ...
}

 

이 두 설정 단계를 완료하면 새로 등록된 사용자는 이메일 주소 소유권을 확인하도록 요청하는 이메일을 받게 됩니다.

 

이메일 인증 기능을 사용하기 전에, 라라벨 애플리케이션이 이메일을 보낼 수 있도록 구성되어 있는지 확인해야 합니다. 그렇지 않으면, 라라벨은 애플리케이션 사용자에게 이메일 인증 링크를 보낼 수 없습니다.

 

반응형

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

Laravel Jetstream Password Update  (0) 2024.01.08
Laravel Jetstream Profile Management  (0) 2024.01.06
Laravel Jetstream Authentication  (0) 2024.01.06
Laravel Jetstream API  (0) 2024.01.06
Laravel Jetstream Teams  (0) 2024.01.06

댓글