User creation and sign-in script
$begingroup$
I made code for signing in users and storing data about them. Everything is fully encrypted and secure also, it is meant to be imported into other code. I'm looking for ways to improve it and to fix any bugs people might find.
import pickle
import base64
class user():
def __init__(self, username, password, user_data):
self.username = username
self.password = password
self.user_data = user_data
def get_user():
try:
user_saves = open("users", 'rb')
users = dict(pickle.load(user_saves))
user_saves.close
name, password, users = sign_in(users)
except:
name, password, users = new_user(True)
name = base64.b64decode(name.decode('utf-8'))
password = base64.b64decode(password.decode('utf-8'))
return name, password, users
def new_user(is_first = False, users=None):
print('Creating account... ')
if users != None:
loop = True
while loop:
name = input('What is your username: ')
name = base64.b64encode(name.encode('utf-8'))
if name in users:
print('Already taken.')
else:
loop = False
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
else:
name = input('What is your username: ')
name = base64.b64encode(name.encode('utf-8'))
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
if is_first == True:
user = {name:password}
user_saves = open("users", 'wb')
pickle.dump(user, user_saves)
add_user_data('', password, True)
return name, password, user
else:
add_user_data('', password)
users.update({name:password})
user_saves = open("users", 'wb')
pickle.dump(users, user_saves)
return name, password, users
user_saves.close
def sign_in(users):
nsi = True #not signed in
while nsi == True:
username = input('What is your username: ')
username = base64.b64encode(username.encode('utf-8'))
if username in users:
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
if password == users.get(username):
print('working')
nsi = False
return username, password
else:
print('Wrong password.')
else:
yn = y_or_n('y or n, are you a new user: ')
if yn == True:
nsi = False
name, password = new_user(users=users)
return name, password
def y_or_n(promt):
ni = True #no input
while ni:
yn = input(promt).lower()
if yn == 'y':
return True
elif yn == 'n':
return False
else:
print('y or n')
def add_user_data(data, password, is_first=False):
password = base64.b64encode(password.encode('utf-8'))
data = base64.b64encode(data.encode('utf-8'))
if is_first == True:
user_data = {password:data}
users_data = open("users_data", 'wb')
pickle.dump(user_data, users_data)
else:
user_data.update({password:data})
users_data = open("users_data", 'wb')
pickle.dump(user_data, users_data)
users_data.close
def get_user_data(password):
password = base64.b64encode(password.encode('utf-8'))
user_data = pickle.load('user_data')
user_data = base64.b64decode(user_data.decode('utf-8'))
return user_data
def delete_user(name, data, ):
data.pop('name', None)
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
python beginner python-3.x authentication
$endgroup$
add a comment |
$begingroup$
I made code for signing in users and storing data about them. Everything is fully encrypted and secure also, it is meant to be imported into other code. I'm looking for ways to improve it and to fix any bugs people might find.
import pickle
import base64
class user():
def __init__(self, username, password, user_data):
self.username = username
self.password = password
self.user_data = user_data
def get_user():
try:
user_saves = open("users", 'rb')
users = dict(pickle.load(user_saves))
user_saves.close
name, password, users = sign_in(users)
except:
name, password, users = new_user(True)
name = base64.b64decode(name.decode('utf-8'))
password = base64.b64decode(password.decode('utf-8'))
return name, password, users
def new_user(is_first = False, users=None):
print('Creating account... ')
if users != None:
loop = True
while loop:
name = input('What is your username: ')
name = base64.b64encode(name.encode('utf-8'))
if name in users:
print('Already taken.')
else:
loop = False
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
else:
name = input('What is your username: ')
name = base64.b64encode(name.encode('utf-8'))
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
if is_first == True:
user = {name:password}
user_saves = open("users", 'wb')
pickle.dump(user, user_saves)
add_user_data('', password, True)
return name, password, user
else:
add_user_data('', password)
users.update({name:password})
user_saves = open("users", 'wb')
pickle.dump(users, user_saves)
return name, password, users
user_saves.close
def sign_in(users):
nsi = True #not signed in
while nsi == True:
username = input('What is your username: ')
username = base64.b64encode(username.encode('utf-8'))
if username in users:
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
if password == users.get(username):
print('working')
nsi = False
return username, password
else:
print('Wrong password.')
else:
yn = y_or_n('y or n, are you a new user: ')
if yn == True:
nsi = False
name, password = new_user(users=users)
return name, password
def y_or_n(promt):
ni = True #no input
while ni:
yn = input(promt).lower()
if yn == 'y':
return True
elif yn == 'n':
return False
else:
print('y or n')
def add_user_data(data, password, is_first=False):
password = base64.b64encode(password.encode('utf-8'))
data = base64.b64encode(data.encode('utf-8'))
if is_first == True:
user_data = {password:data}
users_data = open("users_data", 'wb')
pickle.dump(user_data, users_data)
else:
user_data.update({password:data})
users_data = open("users_data", 'wb')
pickle.dump(user_data, users_data)
users_data.close
def get_user_data(password):
password = base64.b64encode(password.encode('utf-8'))
user_data = pickle.load('user_data')
user_data = base64.b64decode(user_data.decode('utf-8'))
return user_data
def delete_user(name, data, ):
data.pop('name', None)
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
python beginner python-3.x authentication
$endgroup$
add a comment |
$begingroup$
I made code for signing in users and storing data about them. Everything is fully encrypted and secure also, it is meant to be imported into other code. I'm looking for ways to improve it and to fix any bugs people might find.
import pickle
import base64
class user():
def __init__(self, username, password, user_data):
self.username = username
self.password = password
self.user_data = user_data
def get_user():
try:
user_saves = open("users", 'rb')
users = dict(pickle.load(user_saves))
user_saves.close
name, password, users = sign_in(users)
except:
name, password, users = new_user(True)
name = base64.b64decode(name.decode('utf-8'))
password = base64.b64decode(password.decode('utf-8'))
return name, password, users
def new_user(is_first = False, users=None):
print('Creating account... ')
if users != None:
loop = True
while loop:
name = input('What is your username: ')
name = base64.b64encode(name.encode('utf-8'))
if name in users:
print('Already taken.')
else:
loop = False
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
else:
name = input('What is your username: ')
name = base64.b64encode(name.encode('utf-8'))
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
if is_first == True:
user = {name:password}
user_saves = open("users", 'wb')
pickle.dump(user, user_saves)
add_user_data('', password, True)
return name, password, user
else:
add_user_data('', password)
users.update({name:password})
user_saves = open("users", 'wb')
pickle.dump(users, user_saves)
return name, password, users
user_saves.close
def sign_in(users):
nsi = True #not signed in
while nsi == True:
username = input('What is your username: ')
username = base64.b64encode(username.encode('utf-8'))
if username in users:
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
if password == users.get(username):
print('working')
nsi = False
return username, password
else:
print('Wrong password.')
else:
yn = y_or_n('y or n, are you a new user: ')
if yn == True:
nsi = False
name, password = new_user(users=users)
return name, password
def y_or_n(promt):
ni = True #no input
while ni:
yn = input(promt).lower()
if yn == 'y':
return True
elif yn == 'n':
return False
else:
print('y or n')
def add_user_data(data, password, is_first=False):
password = base64.b64encode(password.encode('utf-8'))
data = base64.b64encode(data.encode('utf-8'))
if is_first == True:
user_data = {password:data}
users_data = open("users_data", 'wb')
pickle.dump(user_data, users_data)
else:
user_data.update({password:data})
users_data = open("users_data", 'wb')
pickle.dump(user_data, users_data)
users_data.close
def get_user_data(password):
password = base64.b64encode(password.encode('utf-8'))
user_data = pickle.load('user_data')
user_data = base64.b64decode(user_data.decode('utf-8'))
return user_data
def delete_user(name, data, ):
data.pop('name', None)
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
python beginner python-3.x authentication
$endgroup$
I made code for signing in users and storing data about them. Everything is fully encrypted and secure also, it is meant to be imported into other code. I'm looking for ways to improve it and to fix any bugs people might find.
import pickle
import base64
class user():
def __init__(self, username, password, user_data):
self.username = username
self.password = password
self.user_data = user_data
def get_user():
try:
user_saves = open("users", 'rb')
users = dict(pickle.load(user_saves))
user_saves.close
name, password, users = sign_in(users)
except:
name, password, users = new_user(True)
name = base64.b64decode(name.decode('utf-8'))
password = base64.b64decode(password.decode('utf-8'))
return name, password, users
def new_user(is_first = False, users=None):
print('Creating account... ')
if users != None:
loop = True
while loop:
name = input('What is your username: ')
name = base64.b64encode(name.encode('utf-8'))
if name in users:
print('Already taken.')
else:
loop = False
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
else:
name = input('What is your username: ')
name = base64.b64encode(name.encode('utf-8'))
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
if is_first == True:
user = {name:password}
user_saves = open("users", 'wb')
pickle.dump(user, user_saves)
add_user_data('', password, True)
return name, password, user
else:
add_user_data('', password)
users.update({name:password})
user_saves = open("users", 'wb')
pickle.dump(users, user_saves)
return name, password, users
user_saves.close
def sign_in(users):
nsi = True #not signed in
while nsi == True:
username = input('What is your username: ')
username = base64.b64encode(username.encode('utf-8'))
if username in users:
password = input('What is your password: ')
password = base64.b64encode(password.encode('utf-8'))
if password == users.get(username):
print('working')
nsi = False
return username, password
else:
print('Wrong password.')
else:
yn = y_or_n('y or n, are you a new user: ')
if yn == True:
nsi = False
name, password = new_user(users=users)
return name, password
def y_or_n(promt):
ni = True #no input
while ni:
yn = input(promt).lower()
if yn == 'y':
return True
elif yn == 'n':
return False
else:
print('y or n')
def add_user_data(data, password, is_first=False):
password = base64.b64encode(password.encode('utf-8'))
data = base64.b64encode(data.encode('utf-8'))
if is_first == True:
user_data = {password:data}
users_data = open("users_data", 'wb')
pickle.dump(user_data, users_data)
else:
user_data.update({password:data})
users_data = open("users_data", 'wb')
pickle.dump(user_data, users_data)
users_data.close
def get_user_data(password):
password = base64.b64encode(password.encode('utf-8'))
user_data = pickle.load('user_data')
user_data = base64.b64decode(user_data.decode('utf-8'))
return user_data
def delete_user(name, data, ):
data.pop('name', None)
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
python beginner python-3.x authentication
python beginner python-3.x authentication
edited 6 mins ago
200_success
130k17155419
130k17155419
asked 1 hour ago
hacker HDhacker HD
487
487
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
Security
Everything is fully encrypted and secure
Oh, really? I hope that you aren't confusing encoding with encryption. I don't see any encryption taking place.
This is a huge topic, so you have some reading to do - but the bar for 'secure password store' is significantly above where this program currently resides.
Class syntax
This:
class user():
should be
class User:
Also, you're currently using it as a struct with no methods. That should change - you should move some of your code to be methods on that class.
Break
This:
loop = True
while loop:
should be reworked. You can use a while True, and replace the loop = False with a break at the end of that if block.
File handles
Rather than explicitly closing your files, you should usually use them in a with block. Also, this:
user_saves.close
doesn't do what you think it does; in fact it does nothing. For the function call to occur, you need to add ().
Redundant else
This:
return name, password, user
else:
doesn't need an else, because you've returned in the previous block.
Write a main method
...to pull this code out of global scope:
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216383%2fuser-creation-and-sign-in-script%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Security
Everything is fully encrypted and secure
Oh, really? I hope that you aren't confusing encoding with encryption. I don't see any encryption taking place.
This is a huge topic, so you have some reading to do - but the bar for 'secure password store' is significantly above where this program currently resides.
Class syntax
This:
class user():
should be
class User:
Also, you're currently using it as a struct with no methods. That should change - you should move some of your code to be methods on that class.
Break
This:
loop = True
while loop:
should be reworked. You can use a while True, and replace the loop = False with a break at the end of that if block.
File handles
Rather than explicitly closing your files, you should usually use them in a with block. Also, this:
user_saves.close
doesn't do what you think it does; in fact it does nothing. For the function call to occur, you need to add ().
Redundant else
This:
return name, password, user
else:
doesn't need an else, because you've returned in the previous block.
Write a main method
...to pull this code out of global scope:
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
$endgroup$
add a comment |
$begingroup$
Security
Everything is fully encrypted and secure
Oh, really? I hope that you aren't confusing encoding with encryption. I don't see any encryption taking place.
This is a huge topic, so you have some reading to do - but the bar for 'secure password store' is significantly above where this program currently resides.
Class syntax
This:
class user():
should be
class User:
Also, you're currently using it as a struct with no methods. That should change - you should move some of your code to be methods on that class.
Break
This:
loop = True
while loop:
should be reworked. You can use a while True, and replace the loop = False with a break at the end of that if block.
File handles
Rather than explicitly closing your files, you should usually use them in a with block. Also, this:
user_saves.close
doesn't do what you think it does; in fact it does nothing. For the function call to occur, you need to add ().
Redundant else
This:
return name, password, user
else:
doesn't need an else, because you've returned in the previous block.
Write a main method
...to pull this code out of global scope:
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
$endgroup$
add a comment |
$begingroup$
Security
Everything is fully encrypted and secure
Oh, really? I hope that you aren't confusing encoding with encryption. I don't see any encryption taking place.
This is a huge topic, so you have some reading to do - but the bar for 'secure password store' is significantly above where this program currently resides.
Class syntax
This:
class user():
should be
class User:
Also, you're currently using it as a struct with no methods. That should change - you should move some of your code to be methods on that class.
Break
This:
loop = True
while loop:
should be reworked. You can use a while True, and replace the loop = False with a break at the end of that if block.
File handles
Rather than explicitly closing your files, you should usually use them in a with block. Also, this:
user_saves.close
doesn't do what you think it does; in fact it does nothing. For the function call to occur, you need to add ().
Redundant else
This:
return name, password, user
else:
doesn't need an else, because you've returned in the previous block.
Write a main method
...to pull this code out of global scope:
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
$endgroup$
Security
Everything is fully encrypted and secure
Oh, really? I hope that you aren't confusing encoding with encryption. I don't see any encryption taking place.
This is a huge topic, so you have some reading to do - but the bar for 'secure password store' is significantly above where this program currently resides.
Class syntax
This:
class user():
should be
class User:
Also, you're currently using it as a struct with no methods. That should change - you should move some of your code to be methods on that class.
Break
This:
loop = True
while loop:
should be reworked. You can use a while True, and replace the loop = False with a break at the end of that if block.
File handles
Rather than explicitly closing your files, you should usually use them in a with block. Also, this:
user_saves.close
doesn't do what you think it does; in fact it does nothing. For the function call to occur, you need to add ().
Redundant else
This:
return name, password, user
else:
doesn't need an else, because you've returned in the previous block.
Write a main method
...to pull this code out of global scope:
name, password, users = get_user()
data = get_user_data(password)
print(data)
user_stats = user(name, password, data)
answered 25 mins ago
ReinderienReinderien
4,650823
4,650823
add a comment |
add a comment |
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216383%2fuser-creation-and-sign-in-script%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown