add sending welcome message

master
vuko 2023-06-17 19:52:53 +02:00
parent 0dbaf7f916
commit a274cf296e
3 changed files with 56 additions and 6 deletions

View File

@ -88,10 +88,20 @@ def main():
else:
address = ldap.get_email_address(user)
if isinstance(address, bytes):
address = address.decode()
assert isinstance(address, str)
if args.show_password:
print(f'password: "{password}"')
action = 'reset' if p is not None else 'create'
# TODO use separate command for password/welcome combo
if action is 'create':
logging.info("No existing pasword entry. Welcome email will be sent")
i = input(
f"Type yes to {action} {user}'s password and send email to {address!r}\n"
).strip()
@ -106,7 +116,13 @@ def main():
p.change_password(password)
print("password changed")
send_mail(args.admin, admin_pass, password, user, address)
messages = []
if action == 'create':
messages.append(prepare_welcome_msg(args.admin, user, address))
messages.append(prepare_passwd_msg(args.admin, password, user, address))
send_mail(args.admin, admin_pass, messages)
print("email sent")
ldap.force_sasl(user)
@ -154,10 +170,10 @@ class HsLdap:
raise Exception("too many responses")
address = c.entries[0]["mailRoutingAddress"]
logging.debug(f"got mail address from LDAP: {address}")
return address
return address.value
def send_mail(admin, admin_password, password, user, address):
def prepare_passwd_msg(admin, password, user, address):
mail_template = Template(
resource_string(__name__, "password_reset.jinja2").decode()
)
@ -166,9 +182,24 @@ def send_mail(admin, admin_password, password, user, address):
msg.set_content(mail_template.render(config))
msg["Subject"] = f"Password reset for {user}@hackerspace.pl"
msg["From"] = f"{admin}@hackerspace.pl"
msg["To"] = address.decode() if isinstance(address, bytes) else address
msg["To"] = address
return msg
def prepare_welcome_msg(admin, user, address):
msg = EmailMessage()
msg.set_content(resource_string(__name__, 'welcome.txt').decode())
msg["Subject"] = f"Witamy! Welcome to the Warsaw Hackerspace!"
msg["From"] = f"{admin}@hackerspace.pl"
msg["Bcc"] = f"{admin}@hackerspace.pl"
msg["To"] = ', '.join(set([address, f'{user}@hackerspace.pl']))
return msg
def send_mail(admin, admin_password, messages):
with smtplib.SMTP_SSL("mail.hackerspace.pl") as s:
s.login(admin, admin_password)
s.send_message(msg)
logging.debug(f"Sending {len(messages)} messages via SMTP")
for msg in messages:
s.send_message(msg)

19
hsadmin/welcome.txt Executable file
View File

@ -0,0 +1,19 @@
Witamy w Warszawskim Hackerspacie!
Welcome to the Warsaw Hackerspace!
Powinieneś/powinnaś mieć teraz dostęp do wszyskich wewnętrznych usług dla członków. Tym samym hasłem uwierzytelnisz się wszędzie.
You should now have access to all of our internal, member-exclusive systems. You can use the same password to log in everywhwere.
Przeczytaj naszą wyprawkę żeby dowiedzieć się najważniejszych związanych z Twoim członkostwem, naszym spejsem i wewnętrznymi usługami: https://wiki.hackerspace.pl/members:wyprawka
Please read our new member handbook to learn more about your membership, our hackerspace and internal services: https://wiki.hackerspace.pl/members:wyprawka
Aby zmienić hasło, wejdź na: https://profile.hackerspace.pl
To change your password, go to: https://profile.hackerspace.pl
Aby zobaczyć stan swoich składek, wejdź na: https://kasownik.hackerspace.pl
To see your membership fee status, go to: https://kasownik.hackerspace.pl
W przypadku jakichkolwiek pytań lub wątpliwości, napisz nam mejla na bofh@hackerspace.pl albo porozmawiaj z osobą która Cię zarekomendowała. Jesteśmy mili!
In case of any questions or issues, send us an email to bofh@hackerspace.pl or talk to the person that recommened you to the space. We'll be glad to help!
Happy hacking!

View File

@ -14,7 +14,7 @@ setup(
packages=["hsadmin"],
python_requires=">=3.8,",
install_requires=["kadmin", "setuptools", "jinja2", "ldap3"],
package_data={"hsadmin": ["krb5.conf", "password_reset.jinja2"]},
package_data={"hsadmin": ["krb5.conf", "password_reset.jinja2", "welcome.txt"]},
entry_points={
"console_scripts": [
"hs-admin=hsadmin.cmd:main",