Skip to main content
以下に、Lock の動作を設定するための各種オプションを示します。さらに、スタイルのカスタマイズオプション のページでは、Lock の外観やスタイルを変更するためのオプションも多数用意されています。

Lock の動作を設定する

withOptions を使用して、Lock の初期化に設定オプションを追加できます。
Lock
  .classic()
  .withOptions {
    $0.closable = true
    $0.usernameStyle = [.Username]
    $0.allow = [.Login, .ResetPassword]
  }
  .present(from: self)

動作設定

closable

ユーザーが Lock を閉じられるようにします。デフォルトは false です。
.withOptions {
  $0.closable = true
}

scope

認証に使用するスコープです。デフォルトは openid です。これにより、 だけでなく、ユーザー情報を含む (JWT) である も返されます。認証スコープの詳細については、Scopes のドキュメントを参照してください。
.withOptions {
  $0.scope = "openid name email picture"
}

リフレッシュトークン

Lock オプションで offline_access スコープを指定すると、access_token および id_token とあわせて リフレッシュトークン を返せるようになります。は保存しておき、古いアクセストークンの有効期限が切れた際に、新しいアクセストークンの取得に使用できます。Auth0 認証でリフレッシュトークンを使用する方法の詳細については、リフレッシュトークンの実装に使用する Auth0.Swift SDK のリファレンスドキュメント、または Swift 開発における Auth0 の使用例 (リフレッシュトークンの管理を含む) を包括的に示した Swift Quickstart Guide を参照してください。

termsOfService

デフォルトでは、Lock は Auth0 の利用規約とプライバシーポリシーを使用しますが、別の利用規約やポリシーにリンクするために、他の URL を指定することもできます。
.withOptions {
  $0.termsOfService = "https://mycompany.com/terms"
  $0.privacyPolicy = "https://mycompany.com/privacy"
}

利用規約を表示

データベース接続では、利用規約ダイアログが表示されます。既定値は true です。mustAcceptTerms フラグが有効な場合、利用規約は常に表示されることに注意してください。
.withOptions {
    $0.showTerms = true
}

ユーザーに利用規約への同意を必須にする

データベース接続では、利用規約への明示的な同意が必要です。
.withOptions {
    $0.mustAcceptTerms = true
}

Web認証のオプション

leeway

IDトークンの検証で使用するクロックスキューです。サーバー時刻とクライアント時刻のずれを考慮し、IDトークンが有効と見なされる時間範囲を広げます。デフォルトは60000 milliseconds (60秒) です。
.withOptions {
  $0.leeway = 30000 // 30秒
}

maxAge

ユーザーが最後に認証されてからの許容経過時間 (ミリ秒) 。IDトークンの検証に使用されます。設定した場合、IDトークンには認証時刻を示す auth_time クレームが含まれます。デフォルト値は nil です。
.withOptions {
  $0.maxAge = 86400000 // 1日
}

データベースのオプション

allow

アクセス可能なデータベース画面を指定します。デフォルトでは、.Login.Signup.ResetPassword など、すべての画面が有効です。
.withOptions {
  $0.allow = [.Login, .ResetPassword]
}

initialScreen

ユーザーに最初に表示される画面です。既定値は .Login で、その他のオプションには .SignupResetPassword があります。
.withOptions {
  $0.initialScreen = .Login
}

usernameStyle

ログイン時に必要な識別子の種類を指定します。デフォルトでは [.Username, .Email] が使用されますが、[.Username] または [.Email] も指定できます。ただし、このオプションが有効なのは、Auth0 Dashboardrequires_username フラグを true に設定している場合のみです。
.withOptions {
  $0.usernameStyle = [.Username]
}

カスタムサインアップフィールド

サインアップ時にデフォルトで必要となる情報は、ユーザーのメールアドレスとパスワードです。必要に応じて、取得する情報を増やすことができます。ここで追加のサインアップフィールドを設定すると、それらは user_metadata に保存されます。詳しくは、Metadata を参照してください。なお、カスタムテキストフィールドで使用するアイコンは必ず指定する必要があります。
.withOptions {
  $0.customSignupFields = [
    CustomTextField(name: "first_name", placeholder: "First Name", icon: LazyImage(name: "ic_person", bundle: Lock.bundle)),
    CustomTextField(name: "last_name", placeholder: "Last Name", icon: LazyImage(name: "ic_person", bundle: Lock.bundle))
  ]
}
他のバンドルのアイコンを指定することもできます。次の例のように指定します: CustomTextField(name: “slack_handle”, placeholder: “Slack ハンドル”, icon: LazyImage(name: “ic_slack”, bundle: Bundle(identifier: “CustomBundle”)))

エンタープライズ オプション

エンタープライズ接続に固有の設定オプションもあります。

enterpriseConnectionUsingActiveAuth

デフォルトでは、エンタープライズ接続では Web認証 が使用されます。ただし、代わりに資格情報認証を使用し、username とパスワードの入力を求める接続を指定することもできます。
.withOptions {
  $0.enterpriseConnectionUsingActiveAuth = ["enterprisedomain.com"]
}

activeDirectoryEmailAsUsername

認証情報認証モードで、識別子としてユーザーにメールアドレスの入力を必須とするかどうかを指定します。既定値は false で、その場合は代わりに username が必要です。
.withOptions {
  $0.activeDirectoryEmailAsUsername = true
}

ログのオプション

Lock では、ログ機能の有効/無効を簡単に切り替えられるほか、ログ関連のその他の設定も調整できます。

logLevel

デフォルトは .off です。Syslog のログレベルをサポートしています。
.withOptions {
  $0.logLevel = .all
}

logHttpRequest

Auth0.swift API リクエストをログに出力するかどうかを指定します。既定値は false です。
.withOptions {
  $0.logHttpRequest = true
}

loggerOutput

ロガーの出力ハンドラーを指定します。デフォルトでは、print 文を使用します。
.withOptions {
  $0.loggerOutput = CleanroomLockLogger()
}
上記のコードでは、loggerOutput に CleanroomLogger を使用するよう設定しています。通常は、loggerOutput プロトコルを実装することでこれを実現できます。もちろん、お好みのロガーライブラリを使用することも可能です。以下は、CleanroomLogger を使用してロガー出力を処理する例です。
class CleanroomLockLogger: LoggerOutput {
  func message(_ message: String, level: LoggerLevel, filename: String, line: Int) {
    let channel: LogChannel?
    switch level {
    case .debug:
        channel = Log.debug
    case .error:
        channel = Log.error
    case .info:
        channel = Log.info
    case .verbose:
        channel = Log.verbose
    case .warn:
        channel = Log.warning
    default:
        channel = nil
    }
    channel?.message(message, filePath: filename, fileLine: line)
  }
}