def twofactor_logout(self, message): """twofactor logout: terminate an authenticated session""" user = User.get_from_message(self, message) if not user: return user.logout() user.save() self.direct_reply(message, "Your authenticated session has been terminated")
def twofactor_status(self, message): """twofactor status: tells you if you are currently authenticated and when your session ends""" user = User.get_from_message(self, message) if not user: return if user.is_authenticated: self.direct_reply(message, "You are authenticated, your session expires {}".format(self.to_natural_day_and_time(user.session_expiration_time))) else: self.direct_reply(message, "You are not authenticated")
def verify_user_twofactor(self, message, token): """twofactor verify [token]: start a new authenticated session by providing a verification token generated by the external device""" user = User.get_from_message(self, message) if not user: return if user.verify_token(token): self.direct_reply(message, "You are authenticated, your session expires {}".format(self.to_natural_day_and_time(user.session_expiration_time))) else: self.direct_reply(message, "Authentication failed, please try again") user.save()
def confirm_user_permission(self, message, permissions): """can I [permission]?: check if you have a specific permission""" self.reply(message, "working on that...") user = User.get_from_message(self, message) if not user: self.reply(message, "You have not set up two-factor authentication. Say 'twofactor me' to set it up.") return for permission in permissions.split(): if user.has_permission(permission): self.reply(message, "Yes, you can {}".format(permission)) else: self.reply(message, "No, you can't {}".format(permission))