@424Nkita-Csharsfta4

Как мне в Supabase сделать что бы мне прилходила не только почта?

Я делаю web сервис на vue 3,ts,supabase и заказчик попросил что бы регистрация проходила ещё с помощью промокода данные приходят на supabase всё круто но сам промокод нет подскажите пожалуйста что я делаю не так.
pUoNg.png
вот мой код на vue:
<template>
  <div class="container-login">
    <h1>CryptoLand Registration</h1>

    <div class="inputContainer">
      <label for="email">Email:</label>
      <input type="email" id="email" v-model="email" />
    </div>

    <div class="inputContainer">
      <label for="password">Password:</label>
      <input type="password" id="password" v-model="password" />
    </div>

    <div class="inputContainer">
      <label for="promoCode">Write promo:</label>
      <input type="text" id="promoCode" v-model="promoCode" />
    </div>

    <div class="buttonContainer">
      <button @click="createAccount">Create Account</button>
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { supabase } from '../supabase';

const email = ref('');
const password = ref('');
const promoCode = ref('');

async function createAccount() {
  try {
    // Capture promoCode before signing up
    const userPromoCode = promoCode.value;

    const response = await supabase.auth.signUp({
      email: email.value,
      password: password.value,
    });

    if (response.error) {
      console.error(response.error.message);
    } else if (response.data?.user) {
      const user = response.data.user;

      // Update user data with email, password, and promoCode
      await updateUserData(user.id, userPromoCode);

      console.log('Registration successful. User data updated:', user);

      // Clear input fields after successful registration
      email.value = '';
      password.value = '';
      promoCode.value = '';
    }
  } catch (error) {
    console.error(error);
  }
}

async function updateUserData(userId: string, promoCode: string) {
  try {
    // Perform a POST request to send user data to the Supabase table
    const { data, error } = await supabase.from('users').upsert([
      {
        id: userId,
        email: email.value,
        password: password.value,
        promo_code: promoCode,
      },
    ]);

    if (error) {
      console.error(error.message);
    } else {
      console.log('User data updated:', data);
    }
  } catch (error) {
    console.error(error);
  }
}

</script>

<style scoped>
.container-login {
  margin: 15em auto;
  max-width: 400px;
  padding: 2em;
  border: 1px solid #ccc;
  border-radius: 8px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

h1 {
  text-align: center;
  color: #333;
}

.inputContainer {
  margin-bottom: 1em;
}

label {
  font-size: 1.2em;
  margin-bottom: 0.5em;
}

input {
  width: 100%;
  padding: 0.5em;
  font-size: 1em;
  border: 1px solid #ccc;
  border-radius: 4px;
}

button {
  width: 100%;
  padding: 1em;
  font-size: 1.2em;
  background-color: #206AB3;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

button:hover {
  background-color: #3043BD;
}
</style>
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы