Exemplo n.º 1
0
def artist_add_comments(request):
    if security_utils.rate_limited(request, 'add-comment', 10):
        return HttpResponseBadRequest('Veuillez patienter avant chaque tentative d\'ajout de commentaire.')

    if not request.method == "POST":
        return HttpResponseBadRequest('Invalid method.')

    if not 'token' in request.POST:
        return HttpResponseBadRequest('Please specify token.')

    if not 'uuid' in request.POST:
        return HttpResponseBadRequest('Please specify uuid.')

    token = request.POST.get('token')
    uuid = request.POST.get('uuid')

    profile = Profile.objects.filter(log_token=token, log_expire__gt=time.time())

    if not profile.exists():
        return HttpResponseBadRequest('Requête expirée.')

    profile = profile.get()

    art = None

    for artist in artists_manager.artists:
        artp = artists_manager.artists[artist]
        if artp.unique_id == uuid:
            art = artp
            break

    if art is None:
        return HttpResponseBadRequest('Artiste inconnu.')

    artist_id = art.unique_id
    author_id = profile.unique_id
    timestamp = time.time()
    date = datetime.today().strftime('%d/%m/%Y %H:%M:%S')

    if not 'message' in request.POST:
        return HttpResponseBadRequest('Veuillez spécifier le message.')

    message = request.POST.get('message')

    if len(message) < 1:
        return HttpResponseBadRequest('Votre message ne peut pas être vide.')

    if len(message) > 250:
        return HttpResponseBadRequest('Le commentaire ne peut pas excéder 250 caractères.')

    comment_exist = Comment.objects.filter(artist_id=artist_id,author_id=author_id)

    if comment_exist.exists():
        return HttpResponseBadRequest('Vous avez déjà écrit un commentaire pour cet artiste.')

    comment = Comment.objects.create(artist_id=artist_id, author_id=author_id, time=timestamp,
                                     message=message, date=date, status=0)

    return HttpResponse('Votre commentaire a été pris en compte. Il sera publié sous peu de temps.')
Exemplo n.º 2
0
def forgot_password_request(request):
    if security_utils.rate_limited(request, 'forgot-password', 10):
        return HttpResponseBadRequest(
            'Veuillez patienter avant chaque tentative de réinitialisation de mot de passe.'
        )

    if not request.method == "POST":
        return HttpResponseBadRequest('Invalid method.')

    if not "email" in request.POST:
        return HttpResponseBadRequest('Veuillez spécifier une adresse email.')

    email = request.POST.get('email')

    try:
        user = User.objects.filter(email=email)

        if not user.exists():
            raise Exception('Unknown email')
    except Exception as e:
        print(e)
        return HttpResponseBadRequest(
            'Ce compte n\'existe pas. Veuillez vérifier l\'orthographe de l\'adresse email.'
        )

    user = user.get()

    if not user.is_active:
        return HttpResponseBadRequest(
            'Ce compte utilisateur n\'est pas actif.')

    profile = user.profile
    if len(profile.verify_token) > 0:
        return HttpResponseBadRequest(
            'Ce compte n\'est pas encore vérifié. Veuillez vérifier le compte depuis l\'email reçu.'
        )

    ftime = profile.forgotpassword_time
    if ftime is None:
        ftime = 0

    if ftime + (10 * 60) > time.time():
        return HttpResponseBadRequest(
            'Une demande de réinitialisation de mot de passe a déjà été effectuée récemment. Veuillez réessayer dans dix minutes.'
        )

    profile.forgotpassword_token = security_utils.generate_token()
    profile.forgotpassword_time = time.time()

    profile.save()

    sendemail_request(user.username, profile.forgotpassword_token, user.email)

    return HttpResponse(
        'Une requête de réinitialisation du mot de passe a été envoyée à votre adresse email. Consultez votre boîte mail pour continuer le processus.'
    )
Exemplo n.º 3
0
def request(request):
    if security_utils.rate_limited(request, 'request', 10):
        return HttpResponseBadRequest(
            'Veuillez patienter avant chaque tentative de requête d\'ajout.')

    if not request.method == "POST":
        return HttpResponseBadRequest('Invalid method.')

    if not 'token' in request.POST:
        return HttpResponseBadRequest('Please specify token.')

    token = request.POST.get('token')

    profile = Profile.objects.filter(log_token=token,
                                     log_expire__gt=time.time())

    if not profile.exists():
        return HttpResponseBadRequest('Requête expirée.')

    profile = profile.get()
    user = profile.user

    #okok
    if not 'artist-name' in request.POST:
        return HttpResponseBadRequest(
            'Veuillez spécifier le nom de l\'artiste.')

    if not 'shop-name' in request.POST:
        return HttpResponseBadRequest('Veuillez spécifier le nom du shop.')

    if not 'city' in request.POST:
        return HttpResponseBadRequest('Veuillez spécifier la ville du shop.')

    instagram = ""

    if 'instagram' in request.POST:
        instagram = request.POST.get('instagram')

    artist_name = request.POST.get('artist-name')
    shop_name = request.POST.get('shop-name')
    city = request.POST.get('city')
    author = profile.unique_name

    artist_request = ArtistRequest.objects.create(author=author,
                                                  artist_name=artist_name,
                                                  shop_name=shop_name,
                                                  city=city)

    return HttpResponse(
        'La demande d\'ajout de l\'artiste a bien été envoyée.')
Exemplo n.º 4
0
def artist_comments(request):
    if security_utils.rate_limited(request, 'comments', 1):
        return HttpResponseBadRequest('Veuillez patienter avant chaque requête.')

    if not request.method == "POST":
        return HttpResponseBadRequest('Invalid method.')

    if not 'token' in request.POST:
        return HttpResponseBadRequest('Please specify token.')

    if not 'uuid' in request.POST:
        return HttpResponseBadRequest('Please specify uuid.')

    token = request.POST.get('token')
    uuid = request.POST.get('uuid')

    profile = Profile.objects.filter(log_token=token, log_expire__gt=time.time())

    if not profile.exists():
        return HttpResponseBadRequest('Requête expirée.')

    profile = profile.get()

    art = None

    for artist in artists_manager.artists:
        artp = artists_manager.artists[artist]
        if artp.unique_id == uuid:
            art = artp
            break

    if art is None:
        return HttpResponseBadRequest('Artiste inconnu.')

    res = {}
    comments = Comment.objects.filter(artist_id=art.unique_id, status=1).order_by('-time')
    i = 0

    for comment in comments:
        json_data = serializers.serialize('json', [comment, ])
        new_data = json.loads(json_data)
        new_data = new_data[0]['fields']

        res[i] = new_data
        i += 1

    print(res)

    return JsonResponse(res)
Exemplo n.º 5
0
def verify(request, token):
    if security_utils.rate_limited(request, 'verify-email', 10):
        return render(request, 'verify-error.html', {'message': 'Veuillez patienter entre chaque requête.'})

    message = "Votre compte a été validé. Vous pouvez désormais vous connecter depuis l'application."

    # Check token
    profile = Profile.objects.filter(verify_token=token)

    if not profile.exists():
        return render(request, 'verify-error.html', {'message': 'Token de vérification inconnu. Votre compte est peut être déjà validé.'})

    profile = profile.get()
    profile.verify_token = ""
    profile.save()

    user = profile.user

    send_welcome_email(user.username, user.email)

    # Return page
    return render(request, 'verify-success.html', {'message': message})
Exemplo n.º 6
0
def register(request):
    if security_utils.rate_limited(request, 'register', 30):
        return HttpResponseBadRequest(
            'Veuillez patienter avant chaque tentative d\'inscription.')

    if request.user.is_authenticated:
        return HttpResponseBadRequest('Vous êtes déjà connecté.')

    if not request.method == "POST":
        return HttpResponseBadRequest('Invalid method.')

    if not "type" in request.POST:
        return HttpResponseBadRequest(
            'Vous devez spécifier le type d\'inscription.')

    type = request.POST.get("type")

    if type == "TATTOIST":
        return register_tattoist(request)

    if type == "CLIENT":
        return register_client(request)

    return HttpResponseBadRequest('Le type d\'inscription est invalide.')
Exemplo n.º 7
0
def forgot_password_change(request, token):
    if security_utils.rate_limited(request, 'forgot-password-change', 10):
        return HttpResponseBadRequest(
            'Veuillez patienter avant chaque tentative de réinitialisation de mot de passe.'
        )

    profile = Profile.objects.filter(forgotpassword_token=token,
                                     forgotpassword_time__gt=time.time() -
                                     3600)

    if not profile.exists():
        return render(
            request, 'verify-error.html', {
                'message':
                'Demande invalide ou expirée. Veuillez effectuer une nouvelle demande de changement de mot de passe.'
            })

    if not request.method == "POST":
        return render(request, 'change-password.html')

    if not 'password1' in request.POST or not 'password2' in request.POST:
        return render(
            request, 'change-password.html', {
                'error':
                'Veuillez spécifier le nouveau mot de passe et le mot de passe de confirmation.'
            })

    password1 = request.POST.get('password1')
    password2 = request.POST.get('password2')

    if len(password1) < 1 or len(password2) < 1:
        return render(
            request, 'change-password.html', {
                'error':
                'Veuillez spécifier le nouveau mot de passe et le mot de passe de confirmation.'
            })

    passwd_check = password_utils.password_check(password1)

    if passwd_check is not None:
        return render(request, 'change-password.html', {'error': passwd_check})

    if password1 != password2:
        return render(
            request, 'change-password.html', {
                'error':
                'Les deux mots de passe ne sont pas identiques. Veuillez réessayer.'
            })

    profile = profile.get()

    profile.forgotpassword_token = ""
    profile.forgotpassword_time = -1

    profile.save()

    user = profile.user
    user.set_password(password1)
    user.save()

    sendemail_changed(user.username, user.email)

    return render(request, 'verify-success.html',
                  {'message': 'Le mot de passe a été modifié avec succès.'})
Exemplo n.º 8
0
def login(request):
    if security_utils.rate_limited(request, 'login', 10):
        return HttpResponseBadRequest('Veuillez patienter avant chaque tentative de connexion.')

    if not request.method == "POST":
        return HttpResponseBadRequest('Invalid method.')

    if not "email" in request.POST:
        return HttpResponseBadRequest('Veuillez spécifier une adresse email.')

    if not "password" in request.POST:
        return HttpResponseBadRequest('Veuillez spécifier un mot de passe.')

    remember = 0

    if "remember" in request.POST:
        if request.POST.get("remember") == 1:
            remember = 1

    email = request.POST.get("email")
    password = request.POST.get("password")

    try:
        user = User.objects.filter(email=email)

        if not user.exists():
            raise Exception('Unknown email')

        user = user.get()

        usp = make_password(user.password)
        check = check_password(user.password, usp)

        if not check:
            raise Exception('invalid password')
    except Exception as e:
        print(e)
        return HttpResponseBadRequest('Email ou mot de passe incorrect. Veuillez vérifier vos informations.')

    if not user.is_active:
        return HttpResponseBadRequest('Ce compte utilisateur n\'est pas actif.')

    profile = user.profile
    if len(profile.verify_token) > 0:
        return HttpResponseBadRequest('Veuillez vérifier votre adresse email depuis l\'email que vous avez reçu.')

    profile.log_token = security_utils.generate_token()

    if remember == 0:
        profile.log_expire = time.time() + 86400
    else:
        profile.log_expire = time.time() + (86400 * 365)

    profile.save()

    auth = {'token': profile.log_token, 'expire': profile.log_expire}
    user_info = {'email': user.email, 'username': user.username, 'date_joined': user.date_joined}

    json_data = serializers.serialize('json', [user.profile, ])
    new_data = json.loads(json_data)
    new_data = new_data[0]['fields']

    profile_data = {'auth': auth, 'user': user_info, 'profile': new_data}

    return JsonResponse(profile_data)