## 사용자 등록 프로세스

사용자 등록 프로세스는 기본적으로 두가지 방식을 지원한다.

- 사용자가 직접 등록 신청을 하고 이메일을 통한 확인 프로세스를 통해서 활성화하는 방식
- 관리자가 직접 기본 패스워드로 사용자를 등록하고, 최초 로그인시에 사용자가 패스워드를 변경하는 방식

## 시스템 컨피규레이션

다음은 사용자 등록 프로세스와 관련된 시스템 컨피규레이션 설정 사례이다.

```
  password: {
    lowerCase: true, /* 최소한 하나 이상의 영문 소문자가 포함되어야 한다. */
    upperCase: false, /* 최소한 하나 이상의 영문 대문자가 포함되어야 한다. */
    digit: true, /* 최소한 하나 이상의 숫자가 포함되어야 한다. */
    specialCharacter: true, /* 최소한 하나 이상의 특수문자가 포함되어야 한다. */
    allowRepeat: true, /* 동일 문자 반복을 허용한다. */
    useTightPattern: true, /* 엄격한 패턴으로 강제한다. */
    useLoosePattern: false, /* 느슨한 패턴을 허락한다. */
    tightCharacterLength: 8, /* 엄격한 패턴시 패스워드의 최소 길이 */
    looseCharacterLength: 15, /* 느슨한 패턴시 패스워드의 최소 길이 */
    history: 2, /* 중복 사용을 허락하지 않는 과거 사용한 패스워드 갯수 */
    defaultPassword: '7Hbat@1kG' /* 디폴트 패스워드 */
  },
  /*
    Only When 'disableUserSignupProcess' is set to false,
    a user-initiated user registration process is provided.
    When this value is true, the 'defaultPassword' for the password must be configured.
  */
  disableUserSignupProcess: false, /* 사용자가 직접 등록하는 프로세스를 지원할 지 여부 */

```

### 패스워드 패턴 설정

- `useTightPattern`:

  - `useTightPattern`은 불리언(boolean) 값으로, 기본값은 `true`입니다.
  - 만약 `useTightPattern`이 `true`로 설정되면, 비밀번호 패턴이 "타이트"하게 적용됩니다. 즉, 패스워드가 더 엄격한 규칙을 따라야 합니다.
  - 타이트 패턴은 다음 규칙을 적용합니다:
    - 적어도 하나의 소문자 알파벳을 포함해야 합니다.
    - 적어도 하나의 대문자 알파벳을 포함해야 합니다.
    - 적어도 하나의 숫자를 포함해야 합니다.
    - 적어도 하나의 특수 문자 (예: !@#$%^&\*())를 포함해야 합니다.
    - 문자 반복을 허용하지 않으며, 동일한 문자가 연속해서 3번 이상 나오지 않아야 합니다.
    - 패스워드 길이는 `tightCharacterLength` 값보다 길어야 합니다. 기본값은 8입니다.

- `useLoosePattern`:
  - `useLoosePattern` 또한 불리언(boolean) 값으로, 기본값은 `false`입니다.
  - 만약 `useLoosePattern`이 `true`로 설정되면, 비밀번호 패턴이 "루스"하게 적용됩니다. 이는 더 관대한 비밀번호 규칙을 의미합니다.
  - 루스 패턴은 다음 규칙을 적용합니다:
    - 패스워드 길이는 `looseCharacterLength` 값보다 길어야 합니다. 기본값은 15입니다.

따라서 `useTightPattern`이 활성화되면 더 엄격한 비밀번호 규칙이 적용되고, `useLoosePattern`이 활성화되면 보다 관대한 비밀번호 규칙이 적용됩니다. 이 두 옵션을 통해 사용자가 원하는 비밀번호 규칙을 설정할 수 있습니다.

### 사용자가 직접 등록 신청을 하기 위한 설정

- `disableUserSignupProcess`

  - 이 값을 false로 설정하면
    - 로그인 과정에서 사용자 등록 링크를 제공
    - 사용자 이메일을 통한 사용자 확인 및 활성화 프로세스 진행
    - 사용자가 패스워드를 기억하지 못할 경우, 사용자 이메일을 통한 재설정 프로세스 제공
  - 이 값을 true로 설정하면, 사용자가 직접 자신을 등록하는 프로세스 및 패스워드 재설정 프로세스는 사용할 수 없다.
    - 이 경우에는 `password` 설정의 `defaultPassword` 가 필수적으로 제공되어야 한다.

- `defaultPassword`

  - password 설정의 `defaultPassword` 가 설정되면, 관리자는 `사용자 관리` 메뉴에서 신규 사용자를 생성할 수 있다.

  - ![user-registration-process-by-manager]

[user-registration-process-by-manager]: ./images/user-registration-process-01.png
