Compare commits

..

2 Commits

Author SHA1 Message Date
you
604157ea26 -1 2024-07-14 17:01:09 +03:00
you
155d683199 12 2024-07-12 19:29:13 +03:00
8 changed files with 70 additions and 27 deletions

View File

@ -2,8 +2,8 @@
import { SvelteToast } from "@zerodevx/svelte-toast"; import { SvelteToast } from "@zerodevx/svelte-toast";
import { onMount } from "svelte"; import { onMount } from "svelte";
import "../../app.css"; import "../../app.css";
import Navbar from "../../lib/ui-components/navbar.svelte"; import Navbar from "$lib/ui-components/navbar.svelte";
import { checkAuth, checkAuthSync } from "../../lib/auth/Auth"; import { checkAuth, checkAuthSync } from "$lib/auth/Auth";
import { redirect } from "$lib/tools/url/URLTools"; import { redirect } from "$lib/tools/url/URLTools";
import { AuthStorage } from "$lib/tools/storages/auth-storage"; import { AuthStorage } from "$lib/tools/storages/auth-storage";

View File

@ -1,8 +1,12 @@
<script> <script>
import { checkAuth, checkAuthSync } from "$lib/auth/Auth";
import { redirect } from "$lib/tools/url/URLTools"; import { redirect } from "$lib/tools/url/URLTools";
import { onMount } from "svelte"; import { onMount } from "svelte";
onMount(()=>{ onMount(()=>{
if(checkAuthSync())
redirect("/admin/userslist"); redirect("/admin/userslist");
else
redirect("/admin/login");
}); });
</script> </script>

View File

@ -2,7 +2,7 @@
import { makePost } from "$lib/tools/requests/Requests"; import { makePost } from "$lib/tools/requests/Requests";
import { sayError, sayInfo, sayWarning } from "$lib/tools/toaster/Toaster"; import { sayError, sayInfo, sayWarning } from "$lib/tools/toaster/Toaster";
import { onMount } from "svelte"; import { onMount } from "svelte";
import { checkAuth, saveAuthInfo } from "../../../lib/auth/Auth"; import { checkAuth, saveAuthInfo } from "$lib/auth/Auth";
import { redirect } from "$lib/tools/url/URLTools"; import { redirect } from "$lib/tools/url/URLTools";
import { AuthStorage } from "$lib/tools/storages/auth-storage"; import { AuthStorage } from "$lib/tools/storages/auth-storage";

View File

@ -1,5 +1,5 @@
<script> <script>
import { isStringEmptyOrSpaces } from "../../../lib/tools/strings/Strings"; import { isStringEmptyOrSpaces } from "$lib/tools/strings/Strings";
import { makePost, makeGet } from "$lib/tools/requests/Requests"; import { makePost, makeGet } from "$lib/tools/requests/Requests";
import { import {
checkAuthSync, checkAuthSync,

View File

@ -7,8 +7,10 @@ export async function load({ params }) {
if(!browser) return; if(!browser) return;
const { userToken } = params; const { userToken } = params;
const { reqID } = params; const { reqID } = params;
let spt = reqID.split("_");
return { return {
token: userToken, token: userToken,
reqID: reqID reqID: spt[0],
currency: spt[1]
}; };
} }

View File

@ -3,12 +3,13 @@
import { browser } from "$app/environment"; import { browser } from "$app/environment";
import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth.js"; import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth.js";
import { makePost } from "$lib/tools/requests/requests.js"; import { makeGet, makePost } from "$lib/tools/requests/requests.js";
import { sayError } from "$lib/tools/toaster/Toaster.js"; import { sayError } from "$lib/tools/toaster/Toaster.js";
import { redirect } from "$lib/tools/url/URLTools.js"; import { redirect } from "$lib/tools/url/URLTools.js";
export let data; export let data;
let { reqID } = data; let { reqID } = data;
let {currency} = data;
let { token } = data; let { token } = data;
let reqInfo = []; let reqInfo = [];
@ -16,6 +17,7 @@
let value_cardNumber; let value_cardNumber;
let value_phone; let value_phone;
let value_status; let value_status;
let value_limit;
let canChange = false; let canChange = false;
@ -23,27 +25,29 @@
$: value_cardNumber, value_phone, value_status, checkFields(); $: value_cardNumber, value_phone, value_status, checkFields();
function bindValues() { function bindValues() {
value_bankName = reqInfo[0]?.bankname; value_bankName = reqInfo[0]?.bank_name;
value_cardNumber = reqInfo[0]?.cardnumber; value_cardNumber = reqInfo[0]?.cardnumber;
value_phone = reqInfo[0]?.phone; value_phone = reqInfo[0]?.phone;
value_status = reqInfo[0]?.status === "t"; value_status = reqInfo[0]?.status === "t";
value_limit = Number(reqInfo[0]?.daily_volume_limit);
value_bankName = reqInfo[0]?.bank_id;
} }
function checkFields() { function checkFields() {
if (value_cardNumber?.length !== 16) {
if(value_cardNumber?.length !== 16) canChange = false;
{ return;
canChange = false;
return;
} }
if(value_phone?.length !== 11) if (value_phone?.length !== 11) {
{ canChange = false;
canChange = false; return;
return; }
if (value_limit < 0) {
canChange = false;
return;
} }
canChange = true; canChange = true;
} }
async function getReqInfo() { async function getReqInfo() {
@ -78,7 +82,8 @@
bankname: value_bankName, bankname: value_bankName,
cardnumber: value_cardNumber, cardnumber: value_cardNumber,
phone: value_phone, phone: value_phone,
status: value_status ? "true":"false" status: value_status ? "true" : "false",
limit: value_limit.toString(),
}, },
makeAuthHeaderForAxios(getAuthInfo()?.a) makeAuthHeaderForAxios(getAuthInfo()?.a)
); );
@ -86,7 +91,7 @@
sayError("Данные авторизации устарели"); sayError("Данные авторизации устарели");
// window.location.href = "/"; // window.location.href = "/";
redirect("/admin/"); redirect("/admin/");
// canChange = true; // canChange = true;
return; return;
} }
if (result.error) { if (result.error) {
@ -98,8 +103,23 @@
// canChange = true; // canChange = true;
} }
let activeBanks = [];
async function getActiveBanks() {
let res = await makeGet(
"client/banksList",
makeAuthHeaderForAxios(getAuthInfo()?.a)
);
if (res.error) {
sayError("Не удалось получить банки. Ошибка #4143");
} else {
console.log(res.data);
activeBanks = res.data;
}
}
if (browser) { if (browser) {
getReqInfo(); getReqInfo();
getActiveBanks();
} }
</script> </script>
@ -115,7 +135,10 @@
class="select select-bordered w-full text-base" class="select select-bordered w-full text-base"
> >
<option disabled selected value="-1">Банк</option> <option disabled selected value="-1">Банк</option>
<option value="sber">Сбер</option> {#each activeBanks as bank}
<option value={bank.id}>{bank.name}</option>
{/each}
<!-- <option value="sber">Сбер</option> -->
<!-- <option value="2">Модератор</option> <!-- <option value="2">Модератор</option>
<option value="4">Администратор</option> --> <option value="4">Администратор</option> -->
</select> </select>
@ -131,6 +154,10 @@
Телефон Телефон
<input type="text" class="grow text-info" bind:value={value_phone} /> <input type="text" class="grow text-info" bind:value={value_phone} />
</label> </label>
<label class="input input-bordered flex items-center gap-2">
Лимит ({currency})
<input type="number" class="grow text-info" bind:value={value_limit} />
</label>
<div class="flex p-4 items-center gap-2"> <div class="flex p-4 items-center gap-2">
<p>Активный:</p> <p>Активный:</p>
<input <input
@ -139,8 +166,14 @@
class="toggle toggle-primary" class="toggle toggle-primary"
/> />
</div> </div>
<button on:click={()=>{changeRequisite()}} class="btn btn-primary" disabled={!canChange}>Сохранить</button> <button
<a href={"/admin/user/profile/"+token} class="hidden" id="ref"></a> on:click={() => {
changeRequisite();
}}
class="btn btn-primary"
disabled={!canChange}>Сохранить</button
>
<a href={"/admin/user/profile/" + token} class="hidden" id="ref"></a>
{/each} {/each}
</div> </div>
</div> </div>

View File

@ -185,7 +185,7 @@
</div> </div>
<div class="flex gap-2 p-2 items-center text-lg"> <div class="flex gap-2 p-2 items-center text-lg">
<p class="font-bold">Заморожено:</p> <p class="font-bold">Заморожено:</p>
<p class="text-info">{userData?.insurance}</p> <p class="text-info">{userData?.insurance} USDT</p>
</div> </div>
<div class="flex gap-2 p-2 items-center text-lg"> <div class="flex gap-2 p-2 items-center text-lg">
<p class="font-bold">Ставка:</p> <p class="font-bold">Ставка:</p>
@ -227,7 +227,7 @@
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
<div class="bg-accent rounded-[4px] w-[10px] h-full"></div> <div class="bg-accent rounded-[4px] w-[10px] h-full"></div>
<h1 class="text-2xl font-semibold">Реквизиты пользователя</h1> <h1 class="text-2xl font-semibold">Реквизиты пользователя</h1>
<button class="btn btn-accent">Добавить реквизит</button> <button disabled class="btn btn-accent">Добавить реквизит</button>
</div> </div>
<div class="w-full flex flex-col p-4 rounded-box bg-base-300"> <div class="w-full flex flex-col p-4 rounded-box bg-base-300">
<div class="overflow-x-auto mt-4"> <div class="overflow-x-auto mt-4">
@ -243,6 +243,8 @@
<th>Телефон</th> <th>Телефон</th>
<th>Имя</th> <th>Имя</th>
<th>Девайс</th> <th>Девайс</th>
<th>Объем {userData.code}</th>
<th>Лимит {userData.code}</th>
<th>Опции</th> <th>Опции</th>
<!-- <th></th> --> <!-- <th></th> -->
</tr> </tr>
@ -254,15 +256,17 @@
<td class="" <td class=""
>{requisite["status"] === "t" ? "активен" : "отключен"}</td >{requisite["status"] === "t" ? "активен" : "отключен"}</td
> >
<td>{requisite["bankname"]}</td> <td>{requisite["bank_name"]}</td>
<td>{requisite["is_sbp"] === "t" ? "да" : "нет"}</td> <td>{requisite["is_sbp"] === "t" ? "да" : "нет"}</td>
<td>{requisite["cardnumber"]}</td> <td>{requisite["cardnumber"]}</td>
<td>{requisite["phone"]}</td> <td>{requisite["phone"]}</td>
<td>{requisite["name"]}</td> <td>{requisite["name"]}</td>
<td>{requisite["device_id"]}</td> <td>{requisite["device_id"]}</td>
<td>{requisite["daily_volume"]}</td>
<td>{requisite["daily_volume_limit"]}</td>
<td class="flex gap-2"> <td class="flex gap-2">
<a <a
href={"/admin/user/edit/req/" + token + "/" + requisite["id"]} href={"/admin/user/edit/req/" + token + "/" + requisite["id"] + "_" + userData.code}
class="btn btn-info">Изменить</a class="btn btn-info">Изменить</a
> >
<button class="btn btn-error">Удалить</button> <button class="btn btn-error">Удалить</button>

View File

@ -24,7 +24,7 @@ const config = {
"/admin/user/edit/req/sampleToken/sampleReqID", "/admin/user/edit/req/sampleToken/sampleReqID",
"/admin/user/neworder/sampleToken", "/admin/user/neworder/sampleToken",
"/admin/user/profile/sampleToken", "/admin/user/profile/sampleToken",
"/admin", "/admin/",
"/admin/login", "/admin/login",
"/admin/newuser", "/admin/newuser",
"/admin/userslist", "/admin/userslist",