bugfixing loginpopup
This commit is contained in:
parent
207d347d6c
commit
84f1ab334b
@ -231,6 +231,7 @@ $: {
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if errors}
|
{#if errors}
|
||||||
<label for={id} class="label py-0 pt-1">
|
<label for={id} class="label py-0 pt-1">
|
||||||
<span class="label-text-alt text-error">
|
<span class="label-text-alt text-error">
|
||||||
@ -238,4 +239,5 @@ $: {
|
|||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -7,8 +7,11 @@
|
|||||||
export let form;
|
export let form;
|
||||||
|
|
||||||
let oauthLoading = false;
|
let oauthLoading = false;
|
||||||
|
let isClicked = false;
|
||||||
|
let loading = false;
|
||||||
|
|
||||||
const submitLogin = () => {
|
const submitLogin = () => {
|
||||||
|
loading = true;
|
||||||
return async ({ result, update}) => {
|
return async ({ result, update}) => {
|
||||||
switch (result.type) {
|
switch (result.type) {
|
||||||
case 'success':
|
case 'success':
|
||||||
@ -26,7 +29,8 @@
|
|||||||
await update();
|
await update();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'redirect':
|
case 'redirect':
|
||||||
|
isClicked = true;
|
||||||
toast.success('Login successfully!', {
|
toast.success('Login successfully!', {
|
||||||
style: 'border-radius: 200px; background: #333; color: #fff;'});
|
style: 'border-radius: 200px; background: #333; color: #fff;'});
|
||||||
await update();
|
await update();
|
||||||
@ -56,18 +60,18 @@
|
|||||||
}, 280);
|
}, 280);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
loading = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let loading = false;
|
|
||||||
|
|
||||||
const submitRegistration= () => {
|
const submitRegistration= () => {
|
||||||
loading = true;
|
loading = true;
|
||||||
return async ({ result, update}) => {
|
return async ({ result, update}) => {
|
||||||
console.log(result.type);
|
|
||||||
switch (result.type) {
|
switch (result.type) {
|
||||||
case 'success':
|
case 'success':
|
||||||
|
isClicked = true;
|
||||||
toast.success('Registration successfully!', {
|
toast.success('Registration successfully!', {
|
||||||
style: 'border-radius: 200px; background: #333; color: #fff;'});
|
style: 'border-radius: 200px; background: #333; color: #fff;'});
|
||||||
await update();
|
await update();
|
||||||
@ -113,10 +117,6 @@ const output = await response.json();
|
|||||||
|
|
||||||
let displaySection = 'login';
|
let displaySection = 'login';
|
||||||
|
|
||||||
function changeSection(state)
|
|
||||||
{
|
|
||||||
displaySection = state;
|
|
||||||
}
|
|
||||||
|
|
||||||
let isHoveredGoogle = false;
|
let isHoveredGoogle = false;
|
||||||
let isHoveredDiscord = false;
|
let isHoveredDiscord = false;
|
||||||
@ -140,8 +140,7 @@ function handleHoverGithub() {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<svelte:options immutable={true} />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{#if $screenWidth > 640}
|
{#if $screenWidth > 640}
|
||||||
@ -149,13 +148,13 @@ function handleHoverGithub() {
|
|||||||
|
|
||||||
<input type="checkbox" id="userLogin" class="modal-toggle" />
|
<input type="checkbox" id="userLogin" class="modal-toggle" />
|
||||||
|
|
||||||
<dialog id="userLogin" class="modal modal-bottom sm:modal-middle border border-slate-800">
|
<dialog id="userLogin" class="modal modal-bottom sm:modal-middle">
|
||||||
|
|
||||||
|
|
||||||
<label on:click={() => form= []} id="userLogin" for="userLogin" class="cursor-pointer modal-backdrop bg-[#fff] bg-opacity-[0.05] "></label>
|
<label on:click={() => form= []} id="userLogin" for="userLogin" class="cursor-pointer modal-backdrop bg-[#fff] bg-opacity-[0.05] "></label>
|
||||||
|
|
||||||
|
|
||||||
<div class="modal-box w-full bg-[#000] border border-slate-800 {$screenWidth < 640 ? 'min-h-screen' : ''}">
|
<div class="modal-box w-full bg-[#000] border border-gray-800 {$screenWidth < 640 ? 'min-h-screen' : ''}">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -190,13 +189,22 @@ function handleHoverGithub() {
|
|||||||
label="Password"
|
label="Password"
|
||||||
errors={form?.errors?.password}
|
errors={form?.errors?.password}
|
||||||
/>
|
/>
|
||||||
<div class="w-full max-w-lg">
|
<div class="text-start w-full max-w-lg">
|
||||||
<a href="/reset-password" class="text-sm font-semibold text-[#FB6A67] hover:cursor-pointer hover:underline">Forgot Password?</a>
|
<a href="/reset-password" class="text-start text-sm font-semibold text-[#FB6A67] hover:cursor-pointer hover:underline">Forgot Password?</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full max-w-lg pt-5 m-auto pb-5">
|
<div class="w-full max-w-lg pt-5 m-auto pb-5">
|
||||||
<button type="submit" class="btn bg-[#09090B] border border-gray-600 sm:hover:bg-[#313131] text-white btn-md w-full rounded-lg m-auto text-white font-semibold text-md">
|
{#if !loading && !isClicked}
|
||||||
Login
|
<button type="submit" class="btn bg-purple-600 border border-gray-600 sm:hover:bg-purple-700 transition duration-100 text-white btn-md w-full rounded-lg m-auto text-white font-semibold text-[1rem]">
|
||||||
</button>
|
<span class="text-white">Login</span>
|
||||||
|
</button>
|
||||||
|
{:else}
|
||||||
|
<label class="cursor-not-allowed btn bg-purple-600 opacity-[0.5] border border-gray-600 sm:hover:bg-purple-700 transition duration-100 text-white btn-md w-full rounded-lg m-auto text-white font-semibold text-[1rem]">
|
||||||
|
<div class="flex flex-row m-auto items-center">
|
||||||
|
<span class="loading loading-infinity"></span>
|
||||||
|
<span class="text-white ml-1.5">Signing Up</span>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="divider divider-[#fff] pt-10 pb-10">
|
<div class="divider divider-[#fff] pt-10 pb-10">
|
||||||
@ -305,9 +313,18 @@ function handleHoverGithub() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="w-full max-w-lg pt-5 m-auto pb-3">
|
<div class="w-full max-w-lg pt-5 m-auto pb-3">
|
||||||
<button type="submit" class="btn bg-[#09090B] border border-gray-600 sm:hover:bg-[#313131] text-white btn-md w-full rounded-lg m-auto font-semibold text-md">
|
{#if !loading && !isClicked}
|
||||||
Register
|
<button type="submit" class="btn bg-purple-600 border border-gray-600 sm:hover:bg-purple-700 transition duration-100 text-white btn-md w-full rounded-lg m-auto text-white font-semibold text-[1rem]">
|
||||||
</button>
|
<span class="text-white">Register</span>
|
||||||
|
</button>
|
||||||
|
{:else}
|
||||||
|
<label class="cursor-not-allowed btn bg-purple-600 opacity-[0.5] border border-gray-600 sm:hover:bg-purple-700 transition duration-100 text-white btn-md w-full rounded-lg m-auto text-white font-semibold text-[1rem]">
|
||||||
|
<div class="flex flex-row m-auto items-center">
|
||||||
|
<span class="loading loading-infinity"></span>
|
||||||
|
<span class="text-white ml-1.5">Signing Up</span>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="divider divider-[#fff] pt-10 pb-10">
|
<div class="divider divider-[#fff] pt-10 pb-10">
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
<script lang='ts'>
|
<script lang='ts'>
|
||||||
import { globalForm } from '$lib/store';
|
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
|
|
||||||
//import proTierLogo from "$lib/images/pro_tier_logo.png";
|
//import proTierLogo from "$lib/images/pro_tier_logo.png";
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
|
export let form;
|
||||||
|
|
||||||
let cloudFrontUrl = import.meta.env.VITE_IMAGE_URL;
|
let cloudFrontUrl = import.meta.env.VITE_IMAGE_URL;
|
||||||
|
|
||||||
let mode = false;
|
let mode = false;
|
||||||
@ -339,7 +340,7 @@ onMount(async () => {
|
|||||||
|
|
||||||
<!--Start Login Modal-->
|
<!--Start Login Modal-->
|
||||||
{#if LoginPopup}
|
{#if LoginPopup}
|
||||||
<LoginPopup form={$globalForm}/>
|
<LoginPopup form={form}/>
|
||||||
{/if}
|
{/if}
|
||||||
<!--End Login Modal-->
|
<!--End Login Modal-->
|
||||||
|
|
||||||
|
|||||||
@ -347,7 +347,7 @@ $: {
|
|||||||
|
|
||||||
<main class="w-full">
|
<main class="w-full">
|
||||||
<slot />
|
<slot />
|
||||||
|
<Toaster class="bg-[#1A1A27] text-white text-medium"/>
|
||||||
{#if Cookie && $showCookieConsent === true}
|
{#if Cookie && $showCookieConsent === true}
|
||||||
<Cookie />
|
<Cookie />
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@ -15,6 +15,19 @@ export const load = ({ cookies }) => {
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
async function checkDisposableEmail(email) {
|
||||||
|
const url = `https://disposable.debounce.io/?email=${encodeURIComponent(email)}`;
|
||||||
|
const response = await fetch(url, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const output = (await response.json())?.disposable ?? false;
|
||||||
|
return output
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
|
|
||||||
@ -51,27 +64,36 @@ export const actions = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
redirect(302, '/');
|
redirect(301, '/home');
|
||||||
},
|
},
|
||||||
|
|
||||||
register: async ({ locals, request }) => {
|
register: async ({ locals, request }) => {
|
||||||
const { formData, errors } = await validateData(await request.formData(), registerUserSchema);
|
|
||||||
|
|
||||||
|
|
||||||
|
const { formData, errors } = await validateData(await request.formData(), registerUserSchema);
|
||||||
if (errors) {
|
if (errors) {
|
||||||
return fail(400, {
|
return fail(400, {
|
||||||
data: formData,
|
data: formData,
|
||||||
errors: errors.fieldErrors
|
errors: errors.fieldErrors
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
const isEmailDisposable = await checkDisposableEmail(formData?.email);
|
||||||
|
|
||||||
|
if(isEmailDisposable === "true") {
|
||||||
|
error(400, 'Disposable Email Addresses not allowed!');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//let username = generateUsername(formData.name.split(' ').join('')).toLowerCase();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let newUser = await locals.pb.collection('users').create(formData);
|
const newUser = await locals.pb.collection('users').create(formData);
|
||||||
await locals.pb?.collection('users').update(
|
await locals.pb?.collection('users').update(
|
||||||
newUser?.id, {
|
newUser?.id, {
|
||||||
'freeTrial' : true,
|
'freeTrial' : true,
|
||||||
'tier': 'Pro', //Give new users a free trial for the Pro Subscription
|
'tier': 'Pro', //Give new users a free trial for the Pro Subscription
|
||||||
});
|
});
|
||||||
|
|
||||||
await locals.pb.collection('users').requestVerification(formData.email);
|
await locals.pb.collection('users').requestVerification(formData.email);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('Error: ', err);
|
console.log('Error: ', err);
|
||||||
@ -83,13 +105,20 @@ export const actions = {
|
|||||||
.collection("users")
|
.collection("users")
|
||||||
.authWithPassword(formData.email, formData.password);
|
.authWithPassword(formData.email, formData.password);
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (!locals.pb?.authStore?.model?.verified) {
|
||||||
|
locals.pb.authStore.clear();
|
||||||
|
return {
|
||||||
|
notVerified: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
*/
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log("Error: ", err);
|
console.log("Error: ", err);
|
||||||
error(err.status, err.message);
|
error(err.status, err.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
redirect(303, "/");
|
redirect(301, "/home");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
import { intersect } from 'svelte-intersection-observer-action';
|
import { intersect } from 'svelte-intersection-observer-action';
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
|
export let form;
|
||||||
|
|
||||||
let cloudFrontUrl = import.meta.env.VITE_IMAGE_URL;
|
let cloudFrontUrl = import.meta.env.VITE_IMAGE_URL;
|
||||||
|
|
||||||
@ -454,7 +455,7 @@ class="hidden sm:block [mask-image:linear-gradient(to_bottom_right,white,transpa
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<Pricing />
|
<Pricing data={data} form={form}/>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -7,6 +7,8 @@ import { onMount } from 'svelte';
|
|||||||
//import proTierLogo from "$lib/images/pro_tier_logo.png";
|
//import proTierLogo from "$lib/images/pro_tier_logo.png";
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
|
export let form;
|
||||||
|
|
||||||
let cloudFrontUrl = import.meta.env.VITE_IMAGE_URL;
|
let cloudFrontUrl = import.meta.env.VITE_IMAGE_URL;
|
||||||
|
|
||||||
let mode = false;
|
let mode = false;
|
||||||
@ -747,7 +749,7 @@ async function purchasePlan(subscriptionType:string='') {
|
|||||||
|
|
||||||
<!--Start Login Modal-->
|
<!--Start Login Modal-->
|
||||||
{#if LoginPopup}
|
{#if LoginPopup}
|
||||||
<LoginPopup form={$globalForm}/>
|
<LoginPopup form={form}/>
|
||||||
{/if}
|
{/if}
|
||||||
<!--End Login Modal-->
|
<!--End Login Modal-->
|
||||||
|
|
||||||
|
|||||||
@ -64,7 +64,7 @@ export const actions = {
|
|||||||
*/
|
*/
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log("Error: ", err);
|
console.log("Error: ", err);
|
||||||
//error(err.status, err.message);
|
error(err.status, err.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
redirect(301, "/");
|
redirect(301, "/");
|
||||||
|
|||||||
@ -11,10 +11,10 @@
|
|||||||
let loading = false;
|
let loading = false;
|
||||||
let oauthLoading = false;
|
let oauthLoading = false;
|
||||||
|
|
||||||
|
|
||||||
const submitRegistration= () => {
|
const submitRegistration= () => {
|
||||||
loading = true;
|
loading = true;
|
||||||
return async ({ result, update}) => {
|
return async ({ result, update}) => {
|
||||||
|
|
||||||
switch (result.type) {
|
switch (result.type) {
|
||||||
case 'success':
|
case 'success':
|
||||||
case 'redirect':
|
case 'redirect':
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user