summaryrefslogtreecommitdiff
path: root/login.py
blob: ada7162c81d8577b66c351c3abf913a594576964 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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