问题描述
大家好,我正在创建一个自定义 EmployeeForm
,其中的表单供业务管理员使用,以添加员工。这会在数据库中创建一个新用户 Account
。为了让该员工访问平台,还为他们设置了一个临时的唯一密码。创建时,会向新员工帐户电子邮件发送一封电子邮件,向他们提供他们的电子邮件和随机生成的密码。我还想包含一个链接,将它们直接发送到 Change password
视图。单击此链接后,我希望它登录用户,这样他们就不必自己转到登录页面,这样他们就已经通过身份验证/登录了,他们所要做的就是输入他们的新密码。
我还想知道是否有一种可能的方法甚至不设置随机密码,并允许用户只需单击电子邮件链接,他们就可以自行设置初始密码。 (注意:密码不是必填字段,因此可以在没有初始密码的情况下创建员工帐户。)
class EmployeeForm(ModelForm):
class Meta:
model = Account # Inherits from AbstractBaseUser
fields = ['email','first_name','last_name','phone_no',]
def save(self,commit=True):
"""Generate temp PW,trigger email"""
email = self.instance.email
temp_pass = get_random_string()
self.instance.set_password(temp_pass)
self.send_temp_password()
# Authenticate User to Now Login
authenticate(username=email,password=temp_pass)
return super(EmployeeForm,self).save()
def send_temp_password(self):
domain = f'https://{Site.objects.get_current().domain}'
subject = "Temporary Password/Reset Link"
html_message = render_to_string('password_change.txt',{'domain': domain,'email': self.instance.email,'temp_pass': self.instance.password,})
send_mail(subject,html_message,settings.DEFAULT_FROM_EMAIL,[self.instance.email,],fail_silently=True)
我想总的来说,我正在寻找有关最佳设计和安全性的方向,以便以最有效的方式进行设置。
非常感谢任何建议!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)