passwords via getpass; move input loops from log_in to global scope
parent
fe98000d36
commit
f40149432a
|
@ -24,6 +24,7 @@ from network import BBJ, URLError
|
||||||
from string import punctuation
|
from string import punctuation
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from time import time, sleep
|
from time import time, sleep
|
||||||
|
from getpass import getpass
|
||||||
from subprocess import run
|
from subprocess import run
|
||||||
from random import choice
|
from random import choice
|
||||||
from sys import argv
|
from sys import argv
|
||||||
|
@ -808,13 +809,8 @@ class App(object):
|
||||||
def change_username(self, *_):
|
def change_username(self, *_):
|
||||||
self.loop.stop()
|
self.loop.stop()
|
||||||
run("clear", shell=True)
|
run("clear", shell=True)
|
||||||
def __loop(prompt, positive):
|
|
||||||
new_name = sane_value("user_name", prompt, positive)
|
|
||||||
if network.user_is_registered(new_name):
|
|
||||||
return __loop("%s is already registered" % new_name, False)
|
|
||||||
return new_name
|
|
||||||
try:
|
try:
|
||||||
name = __loop("Choose a new username", True)
|
name = nameloop("Choose a new username", True)
|
||||||
network.user_update(user_name=name)
|
network.user_update(user_name=name)
|
||||||
motherfucking_rainbows("~~hello there %s~~" % name)
|
motherfucking_rainbows("~~hello there %s~~" % name)
|
||||||
sleep(0.8)
|
sleep(0.8)
|
||||||
|
@ -829,18 +825,8 @@ class App(object):
|
||||||
def change_password(self, *_):
|
def change_password(self, *_):
|
||||||
self.loop.stop()
|
self.loop.stop()
|
||||||
run("clear", shell=True)
|
run("clear", shell=True)
|
||||||
def __loop(prompt, positive):
|
|
||||||
first = paren_prompt(prompt, positive)
|
|
||||||
if first == "":
|
|
||||||
confprompt = "Confirm empty password"
|
|
||||||
else:
|
|
||||||
confprompt = "Confirm it"
|
|
||||||
second = paren_prompt(confprompt)
|
|
||||||
if second != first:
|
|
||||||
return __loop("Those didnt match. Try again", False)
|
|
||||||
return first
|
|
||||||
try:
|
try:
|
||||||
password = __loop("Choose a new password. Can be empty", True)
|
password = password_loop("Choose a new password. Can be empty", True)
|
||||||
network.user_update(auth_hash=network._hash(password))
|
network.user_update(auth_hash=network._hash(password))
|
||||||
motherfucking_rainbows("SET NEW PASSWORD")
|
motherfucking_rainbows("SET NEW PASSWORD")
|
||||||
sleep(0.8)
|
sleep(0.8)
|
||||||
|
@ -1456,7 +1442,7 @@ def motherfucking_rainbows(string, inputmode=False, end="\n"):
|
||||||
return print(end, end="")
|
return print(end, end="")
|
||||||
|
|
||||||
|
|
||||||
def paren_prompt(text, positive=True, choices=[]):
|
def paren_prompt(text, positive=True, choices=[], function=input):
|
||||||
"""
|
"""
|
||||||
input(), but riced the fuck out. Changes color depending on
|
input(), but riced the fuck out. Changes color depending on
|
||||||
the value of positive (blue/green for good stuff, red/yellow
|
the value of positive (blue/green for good stuff, red/yellow
|
||||||
|
@ -1481,7 +1467,7 @@ def paren_prompt(text, positive=True, choices=[]):
|
||||||
formatted_choices = ""
|
formatted_choices = ""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = input("{0}({1}{2}{0}){3}> \033[0m".format(
|
response = function("{0}({1}{2}{0}){3}> \033[0m".format(
|
||||||
*mood, text, formatted_choices))
|
*mood, text, formatted_choices))
|
||||||
if not choices:
|
if not choices:
|
||||||
return response
|
return response
|
||||||
|
@ -1490,7 +1476,7 @@ def paren_prompt(text, positive=True, choices=[]):
|
||||||
char = response.lower()[0]
|
char = response.lower()[0]
|
||||||
if char in [c[0] for c in choices]:
|
if char in [c[0] for c in choices]:
|
||||||
return char
|
return char
|
||||||
return paren_prompt("Invalid choice", False, choices)
|
return paren_prompt("Invalid choice", False, choices, function)
|
||||||
|
|
||||||
except EOFError:
|
except EOFError:
|
||||||
print("")
|
print("")
|
||||||
|
@ -1507,6 +1493,25 @@ def sane_value(key, prompt, positive=True, return_empty=False):
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
def password_loop(prompt, positive=True):
|
||||||
|
response1 = paren_prompt(prompt, positive, function=getpass)
|
||||||
|
if response1 == "":
|
||||||
|
confprompt = "Confirm empty password"
|
||||||
|
else:
|
||||||
|
confprompt = "Confirm it"
|
||||||
|
response2 = paren_prompt(confprompt, function=getpass)
|
||||||
|
if response1 != response2:
|
||||||
|
return password_loop("Those didnt match. Try again", False)
|
||||||
|
return response1
|
||||||
|
|
||||||
|
|
||||||
|
def nameloop(prompt, positive):
|
||||||
|
name = sane_value("user_name", prompt, positive)
|
||||||
|
if network.user_is_registered(name):
|
||||||
|
return nameloop("%s is already registered" % name, False)
|
||||||
|
return name
|
||||||
|
|
||||||
|
|
||||||
def log_in():
|
def log_in():
|
||||||
"""
|
"""
|
||||||
Handles login or registration using an oldschool input()
|
Handles login or registration using an oldschool input()
|
||||||
|
@ -1527,7 +1532,7 @@ def log_in():
|
||||||
except ConnectionRefusedError:
|
except ConnectionRefusedError:
|
||||||
def login_loop(prompt, positive):
|
def login_loop(prompt, positive):
|
||||||
try:
|
try:
|
||||||
password = paren_prompt(prompt, positive)
|
password = paren_prompt(prompt, positive, function=getpass)
|
||||||
network.set_credentials(name, password)
|
network.set_credentials(name, password)
|
||||||
except ConnectionRefusedError:
|
except ConnectionRefusedError:
|
||||||
login_loop("// R E J E C T E D //.", False)
|
login_loop("// R E J E C T E D //.", False)
|
||||||
|
@ -1543,27 +1548,11 @@ def log_in():
|
||||||
)
|
)
|
||||||
|
|
||||||
if response == "c":
|
if response == "c":
|
||||||
def nameloop(prompt, positive):
|
|
||||||
name = sane_value("user_name", prompt, positive)
|
|
||||||
if network.user_is_registered(name):
|
|
||||||
return nameloop("%s is already registered" % name, False)
|
|
||||||
return name
|
|
||||||
name = nameloop("Pick a new name", True)
|
name = nameloop("Pick a new name", True)
|
||||||
|
|
||||||
elif response == "n":
|
elif response == "n":
|
||||||
raise InterruptedError
|
raise InterruptedError
|
||||||
|
|
||||||
def password_loop(prompt, positive=True):
|
|
||||||
response1 = paren_prompt(prompt, positive)
|
|
||||||
if response1 == "":
|
|
||||||
confprompt = "Confirm empty password"
|
|
||||||
else:
|
|
||||||
confprompt = "Confirm it"
|
|
||||||
response2 = paren_prompt(confprompt)
|
|
||||||
if response1 != response2:
|
|
||||||
return password_loop("Those didnt match. Try again", False)
|
|
||||||
return response1
|
|
||||||
|
|
||||||
password = password_loop("Enter a password. It can be empty if you want")
|
password = password_loop("Enter a password. It can be empty if you want")
|
||||||
network.user_register(name, password)
|
network.user_register(name, password)
|
||||||
motherfucking_rainbows("~~welcome to the party, %s!~~" % network.user_name)
|
motherfucking_rainbows("~~welcome to the party, %s!~~" % network.user_name)
|
||||||
|
|
Loading…
Reference in New Issue