JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

Untitled Page | JustPaste.app
about 1 month ago8 views
👨‍💻Programming
login_page.py
~/downloads $ cat login_page.py
import os
from tkinter import *
from tkinter import messagebox

# ---------------- Files ----------------
if not os.path.exists("users.txt"):
    open("users.txt", "w").close()
if not os.path.exists("remember.txt"):
    open("remember.txt", "w").close()

# ---------------- Placeholder Helpers ----------------

def on_enter(event):
    if event.widget.get() == "Username":
        event.widget.delete(0, END)

def on_leave(event):
    if event.widget.get() == "":
        event.widget.insert(0, "Username")

def pass_enter(event):
    if event.widget.get() == "Password":
        event.widget.delete(0, END)
        event.widget.config(show="*")

def pass_leave(event):
    if event.widget.get() == "":
        event.widget.config(show="")
        event.widget.insert(0, "Password")

# ---------------- Registration Window ----------------

def open_registration(event=None):
    reg = Toplevel()
    reg.title("User Registration")
    reg.geometry("600x650")
    reg.configure(bg="#007979")
    reg.resizable(False, False)

    Label(reg, text="User Registration",
          font=("Helvetica", 28, "bold"),
          bg="#007979", fg="#FFE2AF").pack(pady=20)

    fields = [
    "Full Name",
    "Username",
    "Email",
    "Phone Number",
    "Password",
    "Confirm Password"
]
    entries = {}

    for field in fields:
        Label(reg, text=field,
              bg="#007979", fg="white",
              font=("Arial", 12)).pack(anchor="w", padx=80)

        entry = Entry(
            reg,
            width=30,
            font=("Arial", 15),
            bg="#FFE2AF",
            relief=FLAT,
            show="*" if "Password" in field else ""
        )
        entry.pack(pady=8)
        entries[field] = entry

    def register_user():
        full_name = entries["Full Name"].get().strip()
        username = entries["Username"].get().strip()
        email = entries["Email"].get().strip()
        password = entries["Password"].get()
        confirm = entries["Confirm Password"].get()
        phone = entries["Phone Number"].get().strip()

        if not (full_name and username and email and phone and password and confirm):
            messagebox.showerror("Error", "Please fill in all fields.")
            return

        if "@" not in email or "." not in email:
            messagebox.showerror("Error", "Enter a valid email.")
            return

        if not phone.isdigit() or len(phone) != 10:
            messagebox.showerror("Error", "Enter a valid phone number.")
            return


        if password != confirm:
            messagebox.showerror("Error", "Passwords do not match.")
            return

        # Check if username already exists
        with open("users.txt", "r") as f:
            for line in f:
                parts = line.strip().split(",")
                if len(parts) >= 2 and parts[1] == username:
                    messagebox.showerror("Error", "Username already exists.")
                    return

        with open("users.txt", "a") as f:
           f.write(f"{full_name},{username},{email},{phone},{password}\n")

        messagebox.showinfo("Success", "Registration successful! You can now log in.")
        reg.destroy()

    Button(
        reg,
        text="REGISTER",
        font=("Arial", 16, "bold"),
        bg="#24B1B1",
        fg="white",
        bd=0,
        width=18,
        command=register_user
    ).pack(pady=30)

# ---------------- Login Window ----------------

class Login_System:

    def __init__(self, root):

        self.root = root
        self.root.title("Login System")
        self.root.geometry("1350x700")
        self.root.configure(bg="#007979")

        Label(
            root,
            text="User Login Page",
            font=("Helvetica", 35, "bold"),
            bg="#007979",
            fg="#FFE2AF"
        ).place(x=480, y=50)

        # Username
        self.usernameentry = Entry(
            root,
            width=25,
            font=("Arial", 20),
            bg="#FFE2AF",
            fg="#007979",
            relief=FLAT
        )

        self.usernameentry.place(x=450, y=170)
        self.usernameentry.insert(0, "Username")
        self.usernameentry.bind("<FocusIn>", on_enter)
        self.usernameentry.bind("<FocusOut>", on_leave)

        # Password
        self.passwordentry = Entry(
            root,
            width=25,
            font=("Arial", 20),
            bg="#FFE2AF",
            fg="#007979",
            relief=FLAT
        )

        self.passwordentry.place(x=450, y=240)
        self.passwordentry.insert(0, "Password")
        self.passwordentry.bind("<FocusIn>", pass_enter)
        self.passwordentry.bind("<FocusOut>", pass_leave)

        # Show / Hide Button
        self.show = False

        def toggle():
            if self.show:
                self.passwordentry.config(show="*")
                btn.config(text="Show")
                self.show = False
            else:
                self.passwordentry.config(show="")
                btn.config(text="Hide")
                self.show = True

        btn = Button(
            root,
            text="Show",
            command=toggle,
            bg="#24B1B1",
            fg="white",
            bd=0,
            cursor="hand2",
            font=("Arial", 8)
        )

        btn.place(x=845, y=245)

        # Remember Me
        self.remember = IntVar()

        Checkbutton(
            root,
            text="Remember Me",
            variable=self.remember,
            bg="#007979",
            fg="white",
            selectcolor="#007979"
        ).place(x=450, y=300)

        # Forgot Password
        Label(
            root,
            text="Forgot Password?",
            bg="#007979",
            fg="#FFE2AF",
            cursor="hand2",
            font=("Arial", 11, "underline")
        ).place(x=680, y=300)

        # Login Button
        Button(
            root,
            text="LOGIN",
            font=("Arial", 18, "bold"),
            bg="#24B1B1",
            fg="white",
            bd=0,
            padx=25,
            pady=5,
            command=self.login
        ).place(x=570, y=360)

        Label(
            root,
            text="Don't have an account?",
            bg="#007979",
            fg="white"
        ).place(x=500, y=440)

        register = Label(
            root,
            text="Register Now",
            bg="#007979",
            fg="#E37434",
            cursor="hand2",
            font=("Arial", 11, "bold", "underline")
        )

        register.place(x=670, y=440)
        register.bind("<Button-1>", open_registration)

        # Load remembered username, if any
        self.load_remembered_user()

    def load_remembered_user(self):
        with open("remember.txt", "r") as f:
            saved_username = f.read().strip()
        if saved_username:
            self.usernameentry.delete(0, END)
            self.usernameentry.insert(0, saved_username)
            self.usernameentry.config(fg="#007979")
            self.remember.set(1)

    def login(self):
        username = self.usernameentry.get().strip()
        password = self.passwordentry.get()

        if username in ("", "Username") or password in ("", "Password"):
            messagebox.showerror("Error", "Please enter both username and password.")
            return

        found = False
        with open("users.txt", "r") as f:
            for line in f:
                parts = line.strip().split(",")
                if len(parts) >= 5 and parts[1] == username and parts[4] == password:
                    found = True
                    break

        if not found:
            messagebox.showerror("Error", "Invalid username or password.")
            return

        # Handle Remember Me
        with open("remember.txt", "w") as f:
            if self.remember.get():
                f.write(username)
            else:
                f.write("")

        messagebox.showinfo("Success", f"Welcome, {username}!")

# ---------------- Main ----------------

if __name__ == "__main__":
    root = Tk()
    Login_System(root)
    root.mainloop()
← Back to timeline