@extends('layouts.admin') @section('title', 'Quản lý tài khoản Zalo') @section('admin_shell_attributes') x-data="accountsApp()" x-init="init()" @endsection @push('styles') @endpush @push('pre_alpine_scripts') @endpush @section('content') @include('partials.admin-topbar', [ 'markImage' => asset('default/Logo.png'), 'markAlt' => 'Zaron', 'title' => 'Quản lý tài khoản Zalo', 'subtitle' => 'Theo dõi phiên đăng nhập, QR và thao tác tài khoản trong cài đặt hệ thống.', 'actions' => ' Mở Chat', ]) @include('settings.partials.nav-tabs')
Tổng tài khoản
Sẵn sàng
Chờ đăng nhập
Lỗi

Thêm tài khoản mới

Đặt tên dễ nhận biết theo team, kênh bán hàng hoặc mục đích sử dụng.
{{-- Chỉ có khi đơn vị có gói giới hạn - xem ZaloAccountQuota::usage(). --}}
Đã dùng tài khoản Zalo theo gói của đơn vị.
@if (auth()->user()->isAdmin()) {{-- Kết nối Official Account. Tách hẳn khỏi form trên vì đây là một KÊNH khác: OA không quét QR, không có phiên trên worker, mà chạy bằng token của Zalo OpenAPI. --}}

Kết nối Zalo OA

Bấm nút, đăng nhập Zalo rồi chọn OA muốn kết nối. Tên OA được lấy tự động, token do hệ thống tự giữ và tự làm mới.
{{-- Thông báo của luồng cấp quyền: Zalo chuyển hướng về trang này nên kết quả đi bằng session flash chứ không phải response của một lời gọi fetch. --}} @if (session('oa_success'))
{{ session('oa_success') }}
@endif @if (session('oa_error'))
{{ session('oa_error') }}
@endif {{-- Không khoá nút: cấp quyền lại một OA đã có thì không tốn thêm suất. --}}
Đã hết suất tài khoản Zalo của gói - chỉ kết nối lại được OA đã có.
Lần đầu dùng, khai địa chỉ này vào ô Redirect URI của ứng dụng bên Zalo Developers — phải trùng khít, sai một ký tự là Zalo từ chối ngay: {{ route('zalo-oa.oauth.callback') }}
{{-- Đường dự phòng, mặc định gập lại: chỉ cần khi chưa khai được Redirect URI hoặc phải nối lại gấp trong lúc có sự cố. --}}
Cách khác: dán refresh token thủ công
@endif

Danh sách tài khoản

QR sẽ tự làm mới khi tài khoản đang cần đăng nhập.
@if (auth()->user()->managesAccounts())
@endif @if (auth()->user()->managesAccounts()) @endif
Hiển thị - trong tài khoản
Trang /
{{-- Modal xem QR lớn --}} {{-- Modal đăng nhập bằng số điện thoại + mật khẩu --}} {{-- Modal đồng bộ tin nhắn cũ từ điện thoại (pull_mobile_msg). Phải có màn chờ riêng chứ không thể chỉ hiện toast: luồng này đòi người dùng cầm điện thoại bấm xác nhận trong ~120s rồi chạy tiếp vài phút, và bước giải mã file Zalo trả về vẫn ở dạng thử nghiệm nên rất cần thấy nó dừng ở bước nào. --}} @endsection @push('scripts') @endpush