import os

from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required,user_passes_test
from django.shortcuts import render, redirect
from django.views.decorators.http import require_GET, require_POST
from django.views.decorators.csrf import csrf_protect

from utils.gitinfo import GitInfo
from chtx24hdujeu import settings




@require_GET
def login_page(request, error=0, user_id=None):
    message = None
    match error:
        case 1:
            message = 'Invalid username and/or password. Please try again.'
        case 2:
            message = 'The user account is disabled. Please login again.'
        case 3:
            message = "User has no role. Please contact your administrator."
    return render(request, 'login.html', context={'message': message})


@require_GET
def sign_in(request):
    username = request.GET.get('username')
    password = request.GET.get('password')

    user_to_login = authenticate(username=username, password=password)

    if user_to_login is not None and user_to_login.is_active:
        # Si un utilisateur est déjà connecté et différent de celui qu'on veut connecter → déconnexion
        if request.user.is_authenticated and request.user != user_to_login:
            logout(request)

        login(request, user_to_login)

        # Redirection selon le rôle
        if user_to_login.is_staff:
            return redirect('tombola:tombola_list')
        elif user_to_login.is_partner:
            return redirect('tombola:partner_space')
        elif user_to_login.is_badge:
            return redirect('tombola:badge_space')
        else:
            return redirect('tombola:login_error', error=3)  # user has no role
    elif user_to_login is not None and not user_to_login.is_active:
        return redirect('tombola:login_error', error=2)  # inactive user
    else:
        return redirect('tombola:login_error', error=1)  # bad credentials



@require_GET
def logout_user(request):
    logout(request)

    return redirect('tombola:login_page')





