This repository has been archived on 2024-08-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
redstoner-utils/login.py

130 lines
4.0 KiB
Python

from wrapper import *
from passlib.hash import pbkdf2_sha256 as crypt
@event_handler("player_login","normal", utils = True)
def player_join(*args):
player = args[1]
if not player.registered:
player.authenticated = True
player.msg("Successfully logged in!")
"""
@event_handler("player.PlayerCommandPreprocessEvent", "lowest")
def on_login_command(event):
player = event.player
password = event.message.replace("/login", "").replace(" ", "")
event.message = event.player.name + " Attempting to login!"
event.cancelled = True
@async(daemon = True)
def check_pass(player, password):
print password
if not player.registered:
player.msg("You are not registered! use /register <password> to register!")
return
else:
if crypt.verify(password, player.password):
player.authenticated = True
player.msg("Successfully logged in!")
else:
print event.message
player.msg("Wrong password!")
check_pass(player, password)"""
@command("login")
@async(daemon = True)
def on_login_command(**kwargs):
player = kwargs["sender"]
args = kwargs["args"]
if not player.registered:
player.msg("You are not registered! use /register <password> to register!")
return
if len(args) > 1:
player.msg("The syntax is /login <password>")
return
elif len(args) is 1:
if crypt.verify(args[0], player.password):
player.authenticated = True
player.msg("Successfully logged in!")
else:
player.msg("Wrong password!")
@command("changepass")
@async(daemon = True)
def on_changepass_command(**kwargs):
player = kwargs["sender"]
args = kwargs["args"]
if not player.registered:
player.msg("You are not registered! use /register <password> to register!")
return
if len(args) < 2:
player.msg("The syntax is /login <current_password> <new_password>")
return
elif len(args) is 2:
if crypt.verify(args[0], player.password):
player.password = crypt.encrypt(args[1], rounds=200000, salt_size=16)
player.msg("Successfully changed your password!")
player.save()
else:
player.msg("You have entered an incorrect current password!")
@command("removepass")
@async(daemon = True)
def on_removepass_command(**kwargs):
player = kwargs["sender"]
args = kwargs["args"]
if not player.registered:
player.msg("You are not registered! use /register <password> to register!")
return
if len(args) < 1:
player.msg("The syntax is /removepass <current_password>")
return
elif len(args) is 1:
if crypt.verify(args[0], player.password):
player.password = "None"
player.registered = False
player.save()
player.msg("Successfully removed your password!")
else:
player.msg("You have entered an incorrect current password!")
@command("register")
@async(daemon = True)
def on_register_command(**kwargs):
player = kwargs["sender"]
args = kwargs["args"]
if len(args) > 1:
player.msg("The syntax is /register <password>")
return
elif len(args) is 1:
if player.registered:
player.msg("You are already registered!")
return
player.password = crypt.encrypt(args[0], rounds=200000, salt_size=16)
player.registered = True
print player.password
player.save()
player.msg("Successfully registered!")
blocked_events = ["block.BlockBreakEvent", "block.BlockPlaceEvent", "player.PlayerMoveEvent",
"player.AsyncPlayerChatEvent","player.PlayerTeleportEvent",
"player.PlayerInteractEvent"]
for event in blocked_events:
@event_handler(event_name = event, priority = "highest")
def on_blocked_event(event):
if not event.player.authenticated:
event.cancelled = True