@extends('layouts.adminlte') @section('title', 'Login Settings') @section('page_title', 'Login Settings') @push('styles') @endpush @section('content')

Login Settings

Jika upload file, gambar upload diprioritaskan dibanding URL.
Mode OTP login belum diaktifkan, saat ini hanya setting parameter.
Gunakan placeholder: @{{otp}}, @{{expired}}, @{{app_name}}, @{{username}}. Bisa dipakai berbeda per controller/channel.

Guide SMTP untuk Controller Lain

Parameter yang disimpan ke app_settings:

  • login.smtp_host
  • login.smtp_port
  • login.smtp_encryption (tls/ssl/starttls/none)
  • login.smtp_starttls
  • login.smtp_username
  • login.smtp_password
  • login.smtp_from_address
  • login.smtp_from_name

Contoh pakai di controller:

config([
    'mail.default' => 'dynamic_smtp',
    'mail.mailers.dynamic_smtp' => [
        'transport' => 'smtp',
        'host' => setting('login.smtp_host'),
        'port' => (int) setting('login.smtp_port', '587'),
        'encryption' => setting('login.smtp_encryption', 'tls'),
        'username' => setting('login.smtp_username'),
        'password' => setting('login.smtp_password'),
    ],
    'mail.from.address' => setting('login.smtp_from_address'),
    'mail.from.name' => setting('login.smtp_from_name', 'RBAC System'),
]);
Ganti helper setting() sesuai cara baca tabel app_settings.

OTP login saat ini tetap nonaktif. Section ini untuk persiapan parameter gateway.
Guide Penggunaan WA Gateway di Controller Lain

Alur Notifikasi WA dari Template:

  1. Ambil template dari login.otp_template_wa.
  2. Replace placeholder: @{{otp}}, @{{expired}}, @{{app_name}}, @{{username}}.
  3. Kirim ke endpoint WA gateway menggunakan wa_base_url + wa_api_key.
  4. Gunakan parameter opsional delay, retry, dan retry_delay.

Contoh implementasi kirim OTP WA (sesuaikan endpoint resmi FlowKirim di akun Anda):

$settings = fn(string $key, string $default = '') =>
    (string) (\App\Modules\LoginSettings\Models\AppSetting::query()->where('key', $key)->value('value') ?? $default);

$otpMessage = str_replace(
    ['@{{otp}}', '@{{expired}}'],
    [$otpCode, (string) $expiredMinutes],
    $settings('login.wa_otp_template', 'Kode OTP Anda: @{{otp}}')
);

$payload = [
    'phone' => $phoneNumber,
    'message' => $otpMessage,
    'sender' => $settings('login.wa_sender'),
    'device_id' => $settings('login.wa_device_id'),
    'delay' => (int) $settings('login.wa_delay_seconds', '0'),
    'retry' => (int) $settings('login.wa_retry_count', '0'),
];

$response = \Illuminate\Support\Facades\Http::withToken($settings('login.wa_api_key'))
    ->post(rtrim($settings('login.wa_base_url'), '/') . '/send', $payload);

Contoh reusable function untuk controller lain:

private function sendWaTemplateNotification(string $phone, array $vars = []): void
{
    $settings = fn(string $key, string $default = '') =>
        (string) (\App\Modules\LoginSettings\Models\AppSetting::query()->where('key', $key)->value('value') ?? $default);

    $template = $settings('login.otp_template_wa', 'Kode OTP Anda: @{{otp}}');
    $message = str_replace(
        ['@{{otp}}', '@{{expired}}', '@{{app_name}}', '@{{username}}'],
        [
            (string) ($vars['otp'] ?? ''),
            (string) ($vars['expired'] ?? ''),
            (string) ($vars['app_name'] ?? config('app.name')),
            (string) ($vars['username'] ?? ''),
        ],
        $template
    );

    \Illuminate\Support\Facades\Http::withToken($settings('login.wa_api_key'))
        ->post(rtrim($settings('login.wa_base_url'), '/') . '/send', [
            'phone' => $phone,
            'message' => $message,
            'sender' => $settings('login.wa_sender'),
            'device_id' => $settings('login.wa_device_id'),
            'delay' => (int) $settings('login.wa_delay_seconds', '0'),
            'retry' => (int) $settings('login.wa_retry_count', '0'),
            'retry_delay' => (int) $settings('login.wa_retry_delay_seconds', '5'),
        ]);
}
OTP login masih nonaktif (sesuai setting saat ini). Guide ini untuk pemakaian notifikasi WA di controller/modul lain. Parameter delay/retry/template mengacu pada konsep artikel FlowKirim. Endpoint final ikuti dokumentasi resmi akun FlowKirim Anda.
@endsection @push('scripts') @endpush