|
|
@ -5,4 +5,75 @@ import auth |
|
|
|
auth.authenticator.add_user("joe", "joepassword") |
|
|
|
auth.authorizor.add_permission("test program") |
|
|
|
auth.authorizor.add_permission("change program") |
|
|
|
auth.authorizor.permit_user("test program", "joe") |
|
|
|
auth.authorizor.permit_user("test program", "joe") |
|
|
|
|
|
|
|
|
|
|
|
class Editor: |
|
|
|
|
|
|
|
def __init__(self): |
|
|
|
self.username = None |
|
|
|
self.menu_map = { |
|
|
|
"login": self.login, |
|
|
|
"test": self.test, |
|
|
|
"change": self.change, |
|
|
|
"quit": self.quit |
|
|
|
} |
|
|
|
|
|
|
|
def login(self): |
|
|
|
logged_in = False |
|
|
|
while not logged_in: |
|
|
|
username = input("username: ") |
|
|
|
password = input("password: ") |
|
|
|
try: |
|
|
|
logged_in = auth.authenticator.login(username, password) |
|
|
|
except auth.InvalidUsername: |
|
|
|
print("Sorry, that username doesn't exist") |
|
|
|
except auth.InvalidPassword: |
|
|
|
print("Sorry, incorrect password") |
|
|
|
else: |
|
|
|
self.username = username |
|
|
|
|
|
|
|
def is_permitted(self, permission): |
|
|
|
try: |
|
|
|
auth.authorizor.check_permission(permission, self.username) |
|
|
|
except auth.NotLoggedInError as e: |
|
|
|
print("{} is not logged in".format(e.username)) |
|
|
|
except auth.NotPermittedError as e: |
|
|
|
print("{} cannot {}".format(e.username, permission)) |
|
|
|
else: |
|
|
|
return True |
|
|
|
|
|
|
|
def test(self): |
|
|
|
if self.is_permitted("test program"): |
|
|
|
print("Testing program now...") |
|
|
|
|
|
|
|
def change(self): |
|
|
|
if self.is_permitted("change program"): |
|
|
|
print("Changing program now...") |
|
|
|
|
|
|
|
def quit(self): |
|
|
|
raise SystemExit() |
|
|
|
|
|
|
|
def menu(self): |
|
|
|
try: |
|
|
|
answer = "" |
|
|
|
while True: |
|
|
|
print(""" |
|
|
|
Please enter a command: |
|
|
|
\tlogin\tLogin |
|
|
|
\ttest\tTest the program |
|
|
|
\tchange\tChange the program |
|
|
|
\tquit\tQuit |
|
|
|
""") |
|
|
|
answer = input("enter a command: ").lower() |
|
|
|
try: |
|
|
|
func = self.menu_map[answer] |
|
|
|
except KeyError: |
|
|
|
print("{} isn't a valid option".format(answer)) |
|
|
|
else: |
|
|
|
func() |
|
|
|
finally: |
|
|
|
print("Thank you for testing the auth module") |
|
|
|
|
|
|
|
|
|
|
|
Editor().menu() |