Module lib.webpage.passwordpage

Function define the web page to change the login password

Expand source code
# Distributed under Pycameresp License
# Copyright (c) 2023 Remi BERTHOLET
""" Function define the web page to change the login password """
from htmltemplate import *
import server.user
import server.sessions
import tools.lang

class PasswordPage:
        """ Html page of password """
        @staticmethod
        def change(request, response):
                """ Change the password page """
                server.user.User.init()
                new_password = request.params.get(b"new_password", None)
                if new_password is not None:
                        res = server.user.User.change(request.params.get(b"user", b""), request.params.get(b"current_password", b""), request.params.get(b"new_password"), request.params.get(b"renew_password"))
                        if res is True:
                                return [AlertSuccess(text=tools.lang.password_changed)]
                        elif res is None:
                                return PasswordPage.change_page(alert=tools.lang.passwords_not_equals)
                        else:
                                return PasswordPage.change_page(alert=tools.lang.wrong_user_or)
                else:
                        return PasswordPage.change_page()

        @staticmethod
        def login_page(alert=None, action=b""):
                """ Login password page """
                return PasswordPage.get_dialog([
                        Edit(text=tools.lang.user, name=b"login_user"),
                        Edit(text=tools.lang.password, type=b"password", name=b"login_password"),
                        Switch(text=tools.lang.remember_me, name=b"remember_me", checked=False)
                        ],
                        tools.lang.login, alert=alert, modal=True, action=action)

        @staticmethod
        def change_page(alert=None):
                """ Change the password page """
                if server.user.User.is_empty():
                        part = [Edit(text=tools.lang.create_user_name,     name=b"user"),]
                else:
                        part = [\
                                Edit(text=tools.lang.enter_user_name,          name=b"user"),
                                Edit(text=tools.lang.current_password,   type=b"password", name=b"current_password")]

                part += [\
                        Edit(text=tools.lang.new_password,     type=b"password", name=b"new_password"),
                        Edit(text=tools.lang.repeat_new_password,     type=b"password", name=b"renew_password")]

                return PasswordPage.get_dialog(part, tools.lang.modify_password, alert)

        @staticmethod
        def get_dialog(content, submit ,alert = None, modal=False, action=b""):
                """ Common dialog of login password page """
                if alert is not None:
                        alert = AlertError(text=alert)
                dialog = [alert, Div([content, Submit(text=submit)], action=action)]
                if modal:
                        dialog = Div(Modal(dialog),class_=b"modal-sm")
                return Form([dialog],method=b"post")

        @staticmethod
        def login(request, response, duration=0):
                """ Login page """
                server.user.User.init()
                if server.sessions.Sessions.check(request.get_cookie(b"session")) is False:
                        if server.user.User.check(request.params.get(b"login_user",b""), request.params.get(b"login_password",b"")):
                                if duration > 0:
                                        if request.params.get(b"remember_me",b"") == b"1":
                                                duration = 86400*365
                                        response.set_cookie(b"session",server.sessions.Sessions.create(duration),duration, http_only=True)
                        else:
                                return PasswordPage.login_page(None if request.params.get(b"login_password",None) is None else tools.lang.wrong_user_or, action=b"/")
                return None

        @staticmethod
        def logout(request, response):
                """ Logout page """
                server.user.User.init()
                server.sessions.Sessions.remove(request.get_cookie(b"session"))

Classes

class PasswordPage

Html page of password

Expand source code
class PasswordPage:
        """ Html page of password """
        @staticmethod
        def change(request, response):
                """ Change the password page """
                server.user.User.init()
                new_password = request.params.get(b"new_password", None)
                if new_password is not None:
                        res = server.user.User.change(request.params.get(b"user", b""), request.params.get(b"current_password", b""), request.params.get(b"new_password"), request.params.get(b"renew_password"))
                        if res is True:
                                return [AlertSuccess(text=tools.lang.password_changed)]
                        elif res is None:
                                return PasswordPage.change_page(alert=tools.lang.passwords_not_equals)
                        else:
                                return PasswordPage.change_page(alert=tools.lang.wrong_user_or)
                else:
                        return PasswordPage.change_page()

        @staticmethod
        def login_page(alert=None, action=b""):
                """ Login password page """
                return PasswordPage.get_dialog([
                        Edit(text=tools.lang.user, name=b"login_user"),
                        Edit(text=tools.lang.password, type=b"password", name=b"login_password"),
                        Switch(text=tools.lang.remember_me, name=b"remember_me", checked=False)
                        ],
                        tools.lang.login, alert=alert, modal=True, action=action)

        @staticmethod
        def change_page(alert=None):
                """ Change the password page """
                if server.user.User.is_empty():
                        part = [Edit(text=tools.lang.create_user_name,     name=b"user"),]
                else:
                        part = [\
                                Edit(text=tools.lang.enter_user_name,          name=b"user"),
                                Edit(text=tools.lang.current_password,   type=b"password", name=b"current_password")]

                part += [\
                        Edit(text=tools.lang.new_password,     type=b"password", name=b"new_password"),
                        Edit(text=tools.lang.repeat_new_password,     type=b"password", name=b"renew_password")]

                return PasswordPage.get_dialog(part, tools.lang.modify_password, alert)

        @staticmethod
        def get_dialog(content, submit ,alert = None, modal=False, action=b""):
                """ Common dialog of login password page """
                if alert is not None:
                        alert = AlertError(text=alert)
                dialog = [alert, Div([content, Submit(text=submit)], action=action)]
                if modal:
                        dialog = Div(Modal(dialog),class_=b"modal-sm")
                return Form([dialog],method=b"post")

        @staticmethod
        def login(request, response, duration=0):
                """ Login page """
                server.user.User.init()
                if server.sessions.Sessions.check(request.get_cookie(b"session")) is False:
                        if server.user.User.check(request.params.get(b"login_user",b""), request.params.get(b"login_password",b"")):
                                if duration > 0:
                                        if request.params.get(b"remember_me",b"") == b"1":
                                                duration = 86400*365
                                        response.set_cookie(b"session",server.sessions.Sessions.create(duration),duration, http_only=True)
                        else:
                                return PasswordPage.login_page(None if request.params.get(b"login_password",None) is None else tools.lang.wrong_user_or, action=b"/")
                return None

        @staticmethod
        def logout(request, response):
                """ Logout page """
                server.user.User.init()
                server.sessions.Sessions.remove(request.get_cookie(b"session"))

Static methods

def change(request, response)

Change the password page

Expand source code
@staticmethod
def change(request, response):
        """ Change the password page """
        server.user.User.init()
        new_password = request.params.get(b"new_password", None)
        if new_password is not None:
                res = server.user.User.change(request.params.get(b"user", b""), request.params.get(b"current_password", b""), request.params.get(b"new_password"), request.params.get(b"renew_password"))
                if res is True:
                        return [AlertSuccess(text=tools.lang.password_changed)]
                elif res is None:
                        return PasswordPage.change_page(alert=tools.lang.passwords_not_equals)
                else:
                        return PasswordPage.change_page(alert=tools.lang.wrong_user_or)
        else:
                return PasswordPage.change_page()
def change_page(alert=None)

Change the password page

Expand source code
@staticmethod
def change_page(alert=None):
        """ Change the password page """
        if server.user.User.is_empty():
                part = [Edit(text=tools.lang.create_user_name,     name=b"user"),]
        else:
                part = [\
                        Edit(text=tools.lang.enter_user_name,          name=b"user"),
                        Edit(text=tools.lang.current_password,   type=b"password", name=b"current_password")]

        part += [\
                Edit(text=tools.lang.new_password,     type=b"password", name=b"new_password"),
                Edit(text=tools.lang.repeat_new_password,     type=b"password", name=b"renew_password")]

        return PasswordPage.get_dialog(part, tools.lang.modify_password, alert)
def get_dialog(content, submit, alert=None, modal=False, action=b'')

Common dialog of login password page

Expand source code
@staticmethod
def get_dialog(content, submit ,alert = None, modal=False, action=b""):
        """ Common dialog of login password page """
        if alert is not None:
                alert = AlertError(text=alert)
        dialog = [alert, Div([content, Submit(text=submit)], action=action)]
        if modal:
                dialog = Div(Modal(dialog),class_=b"modal-sm")
        return Form([dialog],method=b"post")
def login(request, response, duration=0)

Login page

Expand source code
@staticmethod
def login(request, response, duration=0):
        """ Login page """
        server.user.User.init()
        if server.sessions.Sessions.check(request.get_cookie(b"session")) is False:
                if server.user.User.check(request.params.get(b"login_user",b""), request.params.get(b"login_password",b"")):
                        if duration > 0:
                                if request.params.get(b"remember_me",b"") == b"1":
                                        duration = 86400*365
                                response.set_cookie(b"session",server.sessions.Sessions.create(duration),duration, http_only=True)
                else:
                        return PasswordPage.login_page(None if request.params.get(b"login_password",None) is None else tools.lang.wrong_user_or, action=b"/")
        return None
def login_page(alert=None, action=b'')

Login password page

Expand source code
@staticmethod
def login_page(alert=None, action=b""):
        """ Login password page """
        return PasswordPage.get_dialog([
                Edit(text=tools.lang.user, name=b"login_user"),
                Edit(text=tools.lang.password, type=b"password", name=b"login_password"),
                Switch(text=tools.lang.remember_me, name=b"remember_me", checked=False)
                ],
                tools.lang.login, alert=alert, modal=True, action=action)
def logout(request, response)

Logout page

Expand source code
@staticmethod
def logout(request, response):
        """ Logout page """
        server.user.User.init()
        server.sessions.Sessions.remove(request.get_cookie(b"session"))