redis support added
parent
c9d4796936
commit
5009cf8ae4
|
|
@ -0,0 +1,75 @@
|
|||
from hashlib import sha256
|
||||
from App_State import App_State
|
||||
import yaml
|
||||
|
||||
class User (App_State) :
|
||||
|
||||
key = "b9281aea-4a9e-4721-b932-5b5ffbc66cfe"
|
||||
|
||||
def __init__ (self, file_name) :
|
||||
self.file_name = file_name
|
||||
try :
|
||||
with open (file_name) as file :
|
||||
self.users = yaml.safe_load (file)
|
||||
except Exception as e :
|
||||
self.L.error (e, exc_info = True)
|
||||
self.users = {}
|
||||
# end def __init__
|
||||
|
||||
def check_password (self, user_name, password, login = False) :
|
||||
pwd = f"{self.key}:{password}"
|
||||
password = sha256 (pwd.encode ("utf-8")).hexdigest ()
|
||||
try :
|
||||
user = self.users [user_name]
|
||||
if (user ["password"] == password) and user ["active"] :
|
||||
if login :
|
||||
App_State.User = user_name
|
||||
return True
|
||||
return False
|
||||
except Exception as e :
|
||||
self.L.error (e, show_exc = True)
|
||||
return False
|
||||
# end def check_password
|
||||
|
||||
def change_password (self, user, password) :
|
||||
pwd = f"{self.key}:{password}"
|
||||
password = sha256 (pwd.encode ("utf-8")).hexdigest ()
|
||||
if user not in self.users :
|
||||
self.users [user] = {"active" : False}
|
||||
self.users [user] ["password"] = password
|
||||
self.save ()
|
||||
# end def change_password
|
||||
|
||||
def change_active (self, user, active) :
|
||||
if user in self.users :
|
||||
self.users [user] ["active"] = active
|
||||
self.save ()
|
||||
# end def change_active
|
||||
|
||||
def save (self) :
|
||||
with open (self.file_name, "w") as file :
|
||||
yaml.safe_dump (self.users, file)
|
||||
self.L.info ("User information saved")
|
||||
# end def save
|
||||
|
||||
# end class User
|
||||
|
||||
if __name__ == "__main__" :
|
||||
import argparse
|
||||
parser = User.Add_Logging_Attributes ()
|
||||
parser.add_argument ("file_name", type = str)
|
||||
parser.add_argument ("user", type = str)
|
||||
parser.add_argument ("-p", "--password", type = str)
|
||||
parser.add_argument ("-c", "--change", action = "store_true")
|
||||
parser.add_argument ("-a", "--active", type = int)
|
||||
parser.add_argument ("-v", "--verify", action = "store_true")
|
||||
cmd = parser.parse_args ()
|
||||
User.Setup_Logging (cmd)
|
||||
u = User (cmd.file_name)
|
||||
if cmd.change :
|
||||
u.change_password (cmd.user, cmd.password)
|
||||
if cmd.active != None :
|
||||
u.change_active (cmd.user, bool (cmd.active))
|
||||
if cmd.verify :
|
||||
print (u.check_password (cmd.user, cmd.password))
|
||||
|
||||
Loading…
Reference in New Issue