mirror of
https://github.com/Balshgit/different
synced 2025-09-11 02:50:41 +03:00
added EMAIL_CONFIRM enviroment constant
This commit is contained in:
parent
1b19a007ae
commit
4cde734f4d
@ -18,6 +18,7 @@ from server.settings.components import config
|
|||||||
|
|
||||||
ACCOUNT_ACTIVATION_DAYS = 2
|
ACCOUNT_ACTIVATION_DAYS = 2
|
||||||
EMAIL_TIMEOUT = 20
|
EMAIL_TIMEOUT = 20
|
||||||
|
CONFIRM_REGISTRATION_BY_EMAIL = True
|
||||||
|
|
||||||
EMAIL_HOST = config('EMAIL_HOST')
|
EMAIL_HOST = config('EMAIL_HOST')
|
||||||
EMAIL_PORT = config('EMAIL_PORT', cast=int)
|
EMAIL_PORT = config('EMAIL_PORT', cast=int)
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.contrib.auth.models import AbstractUser
|
from django.contrib.auth.models import AbstractUser
|
||||||
from .managers import CustomUserManager
|
from .managers import CustomUserManager
|
||||||
|
from django.dispatch import receiver
|
||||||
|
from django.conf import settings
|
||||||
|
from .tasks import mail_send
|
||||||
|
from server.settings.components.logging import main_logger
|
||||||
|
|
||||||
|
|
||||||
class CustomUser(AbstractUser):
|
class CustomUser(AbstractUser):
|
||||||
@ -22,44 +26,51 @@ class CustomUser(AbstractUser):
|
|||||||
return self.username
|
return self.username
|
||||||
|
|
||||||
|
|
||||||
# # ----- ToDO: Enable this to email verification --------
|
def user_tokens() -> dict:
|
||||||
#
|
tokens_dict = dict()
|
||||||
# from django.dispatch import receiver
|
|
||||||
# from django.conf import settings
|
def generate_token(token_length: int) -> str:
|
||||||
# from .tasks import mail_send
|
from random import choice
|
||||||
# from server.settings.components.logging import main_logger
|
token_chars = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
|
||||||
#
|
generated_token = ''
|
||||||
#
|
for i in range(token_length):
|
||||||
# def user_tokens() -> dict:
|
generated_token += choice(token_chars)
|
||||||
#
|
return generated_token
|
||||||
# tokens_dict = dict()
|
|
||||||
#
|
tokens_dict['activation_token'] = generate_token(token_length=20)
|
||||||
# def generate_token(token_length: int) -> str:
|
tokens_dict['verification_code'] = generate_token(token_length=10)
|
||||||
# from random import choice
|
try:
|
||||||
# token_chars = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
|
users = CustomUser.objects.all().values('activation_token', 'verification_code')
|
||||||
# generated_token = ''
|
for user in users:
|
||||||
# for i in range(token_length):
|
if tokens_dict['activation_token'] == user['activation_token']:
|
||||||
# generated_token += choice(token_chars)
|
tokens_dict['activation_token'] = generate_token(token_length=20)
|
||||||
# return generated_token
|
if tokens_dict['verification_code'] == user['verification_code']:
|
||||||
#
|
tokens_dict['verification_code'] = generate_token(token_length=10)
|
||||||
# tokens_dict['activation_token'] = generate_token(token_length=20)
|
return tokens_dict
|
||||||
#
|
except Exception as e:
|
||||||
# return tokens_dict
|
main_logger.error(f'Cant create tokens because they are not unique. '
|
||||||
#
|
f'Activation token: {tokens_dict["activation_token"]} '
|
||||||
#
|
f'Verification code:{tokens_dict["verification_code"]}'
|
||||||
# @receiver(models.signals.post_save, sender=CustomUser)
|
f'\nError: {e}')
|
||||||
# def post_save_user_signal_handler(sender, instance, created, **kwargs):
|
|
||||||
#
|
|
||||||
# if created and instance.username != 'admin':
|
# # Send email to user
|
||||||
# instance.activation_token = user_tokens()['activation_token']
|
@receiver(models.signals.post_save, sender=CustomUser)
|
||||||
# instance.save()
|
def send_activation_letter(sender, instance, created, **kwargs):
|
||||||
# try:
|
if created and instance.username != 'admin':
|
||||||
# user = CustomUser.objects.get(username=instance.username)
|
username = f'{instance.first_name} {instance.last_name}'
|
||||||
# email = instance.email
|
subject = 'Welcome to book bot administration'
|
||||||
# subject = 'Welcome to book bot administration'
|
email = instance.email
|
||||||
# username = f'{instance.first_name} {instance.last_name}'
|
try:
|
||||||
# text = f'https://{settings.DOMAIN_NAME}/accounts/complete_registration/{user.activation_token}'
|
if settings.CONFIRM_REGISTRATION_BY_EMAIL:
|
||||||
#
|
instance.activation_token = user_tokens()['activation_token']
|
||||||
# mail_send(to_email=email, subject=subject, username=username, text_content=text)
|
instance.verification_code = user_tokens()['verification_code']
|
||||||
# except Exception as e:
|
instance.save()
|
||||||
# main_logger.error(f'Email not send to user {instance.username}. Reason: {e}')
|
user = CustomUser.objects.get(username=instance.username)
|
||||||
|
text = f'https://{settings.DOMAIN_NAME}/accounts/complete_registration/{user.activation_token}'
|
||||||
|
mail_send(to_email=email, subject=subject, username=username, text_content=text)
|
||||||
|
else:
|
||||||
|
instance.is_staff = True
|
||||||
|
mail_send(to_email=email, subject=subject, username=username)
|
||||||
|
except Exception as e:
|
||||||
|
main_logger.error(f'Email not send to user {instance.username}. Reason: {e}')
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "users/base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "users/base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -104,9 +104,11 @@ body {
|
|||||||
<input type="text" class="form-control" name="username" placeholder="Username" required="required">
|
<input type="text" class="form-control" name="username" placeholder="Username" required="required">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">{{ form.username.errors }}</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="password" class="form-control" name="password" placeholder="Password" required="required">
|
<input type="password" class="form-control" name="password" placeholder="Password" required="required">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">{{ form.password.errors }}</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<button type="submit" class="btn btn-primary btn-lg">Login</button>
|
<button type="submit" class="btn btn-primary btn-lg">Login</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
<body>
|
<body>
|
||||||
<div>
|
<div>
|
||||||
<p style="color: green">Добро пожаловать, {{username}}!</p>
|
<p style="color: green">Добро пожаловать, {{username}}!</p>
|
||||||
|
{% if text_content %}
|
||||||
<p style="color: green">Чтобы активировать учётную запись перейдите по ссылке:
|
<p style="color: green">Чтобы активировать учётную запись перейдите по ссылке:
|
||||||
<a href="{{text_content}}">Завершить регистрацию</a></p>
|
<a href="{{text_content}}">Завершить регистрацию</a></p>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "users/base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "users/base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "users/base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "users/base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
@ -7,9 +7,9 @@ from server.apps.accounts.forms import CustomUserCreationForm
|
|||||||
from server.apps.accounts.models import CustomUser
|
from server.apps.accounts.models import CustomUser
|
||||||
from django.core.validators import validate_email
|
from django.core.validators import validate_email
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
def dashboard(request: HttpRequest) -> HttpResponse:
|
def dashboard(request: HttpRequest) -> HttpResponse:
|
||||||
return render(request, "users/dashboard.html", {})
|
return render(request, "users/dashboard.html", {})
|
||||||
|
|
||||||
@ -38,8 +38,13 @@ class RegisterUser(CreateView):
|
|||||||
|
|
||||||
def form_valid(self, form: BaseModelForm) -> HttpResponse:
|
def form_valid(self, form: BaseModelForm) -> HttpResponse:
|
||||||
if self.request.recaptcha_is_valid:
|
if self.request.recaptcha_is_valid:
|
||||||
form.save()
|
user = form.save()
|
||||||
validate_email(form.instance.email)
|
validate_email(form.instance.email)
|
||||||
|
if settings.CONFIRM_REGISTRATION_BY_EMAIL:
|
||||||
message = 'Please check your email for continue registration'
|
message = 'Please check your email for continue registration'
|
||||||
return render(self.request, 'registration/info.html', {'message': message})
|
return render(self.request, 'registration/info.html', {'message': message})
|
||||||
|
else:
|
||||||
|
user.backend = 'django.contrib.auth.backends.ModelBackend'
|
||||||
|
login(self.request, user)
|
||||||
|
return redirect('admin:index')
|
||||||
return render(self.request, 'users/register.html', self.get_context_data())
|
return render(self.request, 'users/register.html', self.get_context_data())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user