All files / components RegisterForm.js

0% Statements 0/13
0% Branches 0/6
0% Functions 0/2
0% Lines 0/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92                                                                                                                                                                                       
export default {
    template: `
        <div class="max-w-md mx-auto bg-white rounded-lg shadow-md p-8">
            <h2 class="text-2xl font-bold mb-6 text-center text-indigo-600">Nowy Użytkownik</h2>
            <form @submit.prevent="register" class="space-y-4">
                <div>
                    <label class="block text-sm font-medium text-gray-700">Nazwa użytkownika</label>
                    <input 
                        type="text" 
                        v-model="username" 
                        class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500"
                        required
                    >
                </div>
                <div>
                    <label class="block text-sm font-medium text-gray-700">PIN (4 cyfry)</label>
                    <input 
                        type="password" 
                        v-model="pin" 
                        maxlength="4" 
                        pattern="[0-9]{4}"
                        class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500"
                        required
                    >
                </div>
                <div>
                    <label class="block text-sm font-medium text-gray-700">Powtórz PIN</label>
                    <input 
                        type="password" 
                        v-model="pinConfirm" 
                        maxlength="4" 
                        pattern="[0-9]{4}"
                        class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500"
                        required
                    >
                </div>
                <button 
                    type="submit" 
                    class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"
                >
                    Utwórz konto
                </button>
                <router-link 
                    to="/" 
                    class="w-full text-center text-sm text-indigo-600 hover:text-indigo-500"
                >
                    Masz już konto? Zaloguj się
                </router-link>
            </form>
        </div>
    `,
    data() {
        return {
            username: '',
            pin: '',
            pinConfirm: ''
        }
    },
    methods: {
        async register() {
            if (this.pin !== this.pinConfirm) {
                alert('PINy nie są identyczne!');
                return;
            }
 
            try {
                const response = await fetch('/auth/register', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                    },
                    body: JSON.stringify({
                        username: this.username,
                        pin: this.pin
                    })
                });
 
                const data = await response.json();
 
                if (data.success) {
                    alert('Konto zostało utworzone!');
                    this.$emit('switch-to-login');
                } else {
                    alert(data.error || 'Błąd podczas rejestracji');
                }
            } catch (error) {
                console.error('Błąd rejestracji:', error);
                alert('Wystąpił błąd podczas rejestracji');
            }
        }
    }
};