feat(sms): simplify SMS settings to use only KAVENEGAR_API_KEY from env, remove other SMS-related fields from config
This commit is contained in:
@@ -36,11 +36,6 @@ const schema = z.object({
|
||||
mellat_username: z.string(),
|
||||
mellat_password: z.string(),
|
||||
sep_terminal_id: z.string(),
|
||||
// sms
|
||||
sms_provider: z.string(),
|
||||
kavenegar_api_key: z.string(),
|
||||
kavenegar_sender: z.string(),
|
||||
sms_price_rials: z.string(),
|
||||
});
|
||||
|
||||
type FormValues = z.infer<typeof schema>;
|
||||
@@ -62,10 +57,7 @@ interface Settings {
|
||||
mellat_username: string;
|
||||
mellat_password: string;
|
||||
sep_terminal_id: string;
|
||||
sms_provider: string;
|
||||
kavenegar_api_key: string;
|
||||
kavenegar_sender: string;
|
||||
sms_price_rials: string;
|
||||
sms_api_key_configured: boolean;
|
||||
}
|
||||
|
||||
// ── Component ─────────────────────────────────────────────────────────────
|
||||
@@ -73,7 +65,6 @@ interface Settings {
|
||||
export default function SettingsPage() {
|
||||
const qc = useQueryClient();
|
||||
const [showMellatPassword, setShowMellatPassword] = useState(false);
|
||||
const [showKavenegarKey, setShowKavenegarKey] = useState(false);
|
||||
|
||||
const { data, isLoading } = useQuery({
|
||||
queryKey: ['admin-settings'],
|
||||
@@ -120,10 +111,6 @@ export default function SettingsPage() {
|
||||
mellat_username: settings.mellat_username ?? '',
|
||||
mellat_password: settings.mellat_password ?? '',
|
||||
sep_terminal_id: settings.sep_terminal_id ?? '',
|
||||
sms_provider: settings.sms_provider ?? 'kavenegar',
|
||||
kavenegar_api_key: settings.kavenegar_api_key ?? '',
|
||||
kavenegar_sender: settings.kavenegar_sender ?? '',
|
||||
sms_price_rials: settings.sms_price_rials ?? '500',
|
||||
});
|
||||
}
|
||||
}, [settings, reset]);
|
||||
@@ -477,45 +464,16 @@ export default function SettingsPage() {
|
||||
<h3 style={{ fontSize: 15 }}>تنظیمات پیامک (SMS)</h3>
|
||||
</div>
|
||||
|
||||
<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '1rem' }}>
|
||||
<div>
|
||||
<label style={{ fontSize: 12.5, fontWeight: 500, display: 'block', marginBottom: 4 }}>سرویس پیامک</label>
|
||||
<select {...register('sms_provider')}
|
||||
style={{ width: '100%', height: 38, padding: '0 12px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 13 }}>
|
||||
<option value="kavenegar">کاوهنگار</option>
|
||||
<option value="rangineh">رنگینه</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label style={{ fontSize: 12.5, fontWeight: 500, display: 'block', marginBottom: 4 }}>قیمت هر پیامک (ریال)</label>
|
||||
<input {...register('sms_price_rials')} type="number" min={0} dir="ltr" placeholder="500"
|
||||
style={{ width: '100%', height: 38, padding: '0 12px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 13, boxSizing: 'border-box' }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style={{ marginTop: '1rem' }}>
|
||||
<div style={{ fontSize: 13, fontWeight: 600, marginBottom: '0.75rem' }}>تنظیمات کاوهنگار</div>
|
||||
<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '0.75rem' }}>
|
||||
<div>
|
||||
<label style={{ fontSize: 12.5, fontWeight: 500, display: 'block', marginBottom: 4 }}>API Key</label>
|
||||
<div style={{ position: 'relative' }}>
|
||||
<input {...register('kavenegar_api_key')} type={showKavenegarKey ? 'text' : 'password'} dir="ltr" placeholder="••••••••••••••••"
|
||||
style={{ width: '100%', height: 38, padding: '0 36px 0 12px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 13, boxSizing: 'border-box' }}
|
||||
/>
|
||||
<button type="button" onClick={() => setShowKavenegarKey(p => !p)}
|
||||
style={{ position: 'absolute', left: 10, top: '50%', transform: 'translateY(-50%)', background: 'none', border: 'none', cursor: 'pointer', color: 'var(--muted)', fontSize: 12 }}>
|
||||
{showKavenegarKey ? 'پنهان' : 'نمایش'}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label style={{ fontSize: 12.5, fontWeight: 500, display: 'block', marginBottom: 4 }}>شماره فرستنده</label>
|
||||
<input {...register('kavenegar_sender')} dir="ltr" placeholder="10008664"
|
||||
style={{ width: '100%', height: 38, padding: '0 12px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 13, boxSizing: 'border-box' }}
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label style={{ fontSize: 12.5, fontWeight: 500, display: 'block', marginBottom: 4 }}>کلید API کاوهنگار</label>
|
||||
<div style={{ fontSize: 13 }}>
|
||||
{settings?.sms_api_key_configured
|
||||
? <span style={{ color: 'var(--success)' }}>✓ تنظیمشده (از متغیر محیطی KAVENEGAR_API_KEY)</span>
|
||||
: <span style={{ color: 'var(--danger)' }}>✗ تنظیمنشده — مقدار KAVENEGAR_API_KEY را در فایل env قرار دهید</span>}
|
||||
</div>
|
||||
<p style={{ fontSize: 11.5, color: 'var(--muted)', marginTop: 8 }}>
|
||||
کلید API فقط از طریق متغیر محیطی سرور مدیریت میشود و در این پنل قابل ویرایش نیست.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -541,10 +499,6 @@ export default function SettingsPage() {
|
||||
mellat_username: settings.mellat_username,
|
||||
mellat_password: settings.mellat_password,
|
||||
sep_terminal_id: settings.sep_terminal_id,
|
||||
sms_provider: settings.sms_provider,
|
||||
kavenegar_api_key: settings.kavenegar_api_key,
|
||||
kavenegar_sender: settings.kavenegar_sender,
|
||||
sms_price_rials: settings.sms_price_rials,
|
||||
})}
|
||||
disabled={!isDirty || mutation.isPending}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user