Django. Ха sh пароль в models.py - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть триггер в моей базе данных, чтобы создать пароль из другого столбца и обновить его в текущей базе данных. Затем я вставляю этот пароль в другую таблицу. Проблема в том, что мой проект не нуждается в форме регистрации в качестве новой страницы. Так что только админ может добавлять новых пользователей. Вопрос звучит так: есть ли возможность создать пароль ha sh в моделях? Или, с другой стороны, как создать пароль, введите models.py?

models.py

class Student(models.Model):
    studentIndex = models.IntegerField()
    studentName = models.CharField(max_length=50)
    studentSurname = models.CharField(max_length=50, default='')
    studentPhoneNumber = models.CharField(max_length=12, default='+48')
    studentPesel = models.CharField(max_length=11, default='')
    studentStudyMode = models.CharField(max_length=12, default='')
    studentFaculty = models.CharField(max_length=30, default='')
    studentSemester = models.IntegerField(default='')
    studentAddress = models.CharField(max_length=255, default='')
    studentMotherName = models.CharField(max_length=100, default='')
    studentBirth = models.DateField(help_text='year-month-day')
    studentEmail = models.EmailField(max_length=255, default='')
    studentImage = models.ImageField(default='default.jpg', upload_to='profile_pics')
    studentPassword = models.CharField(max_length=100, default='12345678',
                                       help_text='Do not modify this field. Password will be generated automatically')
    studentDateJoined = models.DateTimeField(default=datetime.datetime.now())

    def __str__(self):
        return f'{self.studentIndex} - {self.studentName} {self.studentSurname}'

Триггер в таблице user_student

CREATE TRIGGER add_new_student_with_correct_password
    after insert
    on users_student
begin
    update users_student
    set studentPassword = strftime('%Y', studentBirth)
        || substr(strftime('%m', studentBirth), 2, 1)
        || strftime('%d', studentBirth)
        || substr(studentMotherName, 1, 1)
        || lower(substr(studentName, 1, 1))
    where studentPassword = '12345678';

    insert into auth_user(password, last_login, is_superuser, username, first_name, email, is_staff, is_active,
                          date_joined, last_name)
    values (strftime('%Y', studentBirth)
                || substr(strftime('%m', studentBirth), 2, 1)
                || strftime('%d', studentBirth)
                || substr(studentMotherName, 1, 1)
                || lower(substr(studentName, 1, 1)),
            null,
            false,
            new.studentIndex,
            new.studentName,
            new.studentEmail,
            false,
            true,
            new.studentDateJoined,
            new.studentSurname);
end;

PS Есть таблицы users_student и auth_user, с которыми я работаю.

PPS Как выглядят мои пароли

Большое спасибо

1 Ответ

0 голосов
/ 13 апреля 2020

Django имеет собственную структуру аутентификации, и я предлагаю вам либо наследовать от AbstractUser , либо вы можете посмотреть открытый исходный код модели User и прочитать документацию по хэшам паролей а затем напишите что-нибудь подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...