Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions DB/configuration/event_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"funcs": {
"create_db_instance": {
"category": "creation",
"resource_type": "DBInstance",
"message": "db instance created"
},
"delete_db_instance": {
"category": "deletion",
"resource_type": "DBInstance",
"message": "db instance deleted"
},
"stop_db_instance": {
"category": "deletion",
"resource_type": "DBInstance",
"message": "DB instance shutdown"
},
"start_db_instance": {
"category": "deletion",
"resource_type": "DBInstance",
"message": "DB instance restarted"
},

"create_db_snapshot":{
"category": "creation",
"resource_type": "DBSnapshot",
"message": "db snapshot created"
},
"delete_db_snapshot":{
"category": "creation",
"resource_type": "DBSnapshot",
"message": "db snapshot deleted"

},
"restore_db_instance_from_snapshot":{
"category": "restoring",
"resource_type": "DBSnapshot",
"message": "db instance restored from snapshot"

}
},
"errs": {

}
}
21 changes: 11 additions & 10 deletions Storage_UserAdministration/Controllers/AuthenticationController.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
from Services.AuthenticationService import AuthenticationService

class AuthenticationController:
def __init__(self):
self.auth_service = AuthenticationService()
def __init__(self, data_file_path):
self.auth_service = AuthenticationService(data_file_path)

def login(self, username, password):
session_id = self.auth_service.login(username, password)
Expand Down Expand Up @@ -41,12 +41,13 @@ def register(self, username, password):

# Example usage
if __name__ == "__main__":
controller = AuthenticationController()
# # Register a user
controller.register('user', 'password123')
# # Login a user
session_id = controller.login('user', 'password123')
controller = AuthenticationController('users.json')
# Register a user
controller.register('user1', 'password123')
# Login a user
session_id = controller.login('user1', 'password123')
# Check if the user is authenticated
controller.check_authentication('user')
# Logout the user
controller.logout('user')
if session_id:
controller.check_authentication(session_id)
# Logout the user
controller.logout(session_id)
14 changes: 7 additions & 7 deletions Storage_UserAdministration/DataAccess/UserDAL.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import json
import os
# from Models.UserModel import User
# from Models.PermissionModel import Permission
# from Models.PolicyModel import Policy
# from Models.GroupModel import Group
# from Models.QuotaModel import Quota
# from Models.RoleModel import Role
from Models.UserModel import User
from Models.PermissionModel import Permission
from Models.PolicyModel import Policy
from Models.GroupModel import Group
from Models.QuotaModel import Quota
from Models.RoleModel import Role

class UserDAL:
FILE_PATH = 'users.json'
FILE_PATH = "users_data.json"

def __init__(self):
self.users = self.load_users_from_file()
Expand Down
Binary file not shown.
Binary file not shown.
57 changes: 26 additions & 31 deletions Storage_UserAdministration/Models/userModel.py
Original file line number Diff line number Diff line change
@@ -1,51 +1,46 @@
# from Models.PermissionModel import Permission
# from Models.PolicyModel import Policy
# from Models.GroupModel import Group
# from Models.QuotaModel import Quota
# from Models.RoleModel import Role
import uuid

from Models.PermissionModel import Permission
from Models.PolicyModel import Policy
from Models.GroupModel import Group
from Models.QuotaModel import Quota
from Models.RoleModel import Role
class User:
def __init__(
self,
username: str,
password: str,
email=None,

# role: Optional[Role] = None,
# policies: Optional[List[Policy]] = None,
# quota: Optional[Quota] = None,
# groups: Optional[List[Group]] = None
email: str,
role: Optional[Role] = None,
policies: Optional[List[Policy]] = None,
quota: Optional[Quota] = None,
groups: Optional[List[Group]] = None
):
self.user_id = str(uuid.uuid4()) # Unique identifier
self.username = username
self.password=password
self.password_hash = hashlib.sha256(password.encode()).hexdigest()
self.email = email
self.logged_in=False
self.token=None
# self.role = role
# self.policies = policies
# self.quota =quota
# self.groups = groups
self.role = role
self.policies = policies
self.quota =quota
self.groups = groups


# def hash_password(self, password):
# # Implement password hashing
# return hashlib.sha256(password.encode()).hexdigest()
def hash_password(self, password):
# Implement password hashing
return hashlib.sha256(password.encode()).hexdigest()

def verify_password(self, password:str):
# Verify password against the hashed password
return self.password_hash == self.hash_password(password)

# def can(self, action, resource):
# return any(
# policy.evaluate(policy_name, permissions) for policy in self.policies
# ) or self.role.has_permission(permissions)
def can(self, action, resource):
return any(
policy.evaluate(policy_name, permissions) for policy in self.policies
) or self.role.has_permission(permissions)

# def update_quota(self, quota: Quota):
# self.quota = quota
def update_quota(self, quota: Quota):
self.quota = quota

# def check_quota(self):
# return self.quota.check_exceeded()
def check_quota(self):
return self.quota.check_exceeded()


43 changes: 19 additions & 24 deletions Storage_UserAdministration/Services/AuthenticationService.py
Original file line number Diff line number Diff line change
@@ -1,53 +1,48 @@
# service.py
import hashlib
import uuid
import sys
import os

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

from DataAccess.UserDAL import UserDAL
from Models.userModel import User
from DataAccess.userManager import UserNanager

class AuthenticationService:
def __init__(self):
self.data_access =UserDAL()
def __init__(self,data_file_path):
self.data_access =UserNanager(data_file_path)
self.logged_in_users = {}

def hash_password(self, password):
return hashlib.sha256(password.encode()).hexdigest()

def login(self, username, password):
users = self.data_access.users
users = self.data_access.load_users()
user_data = users.get(username)
if user_data and user_data.get('password') == self.hash_password(password):
session_id = self.generate_session_id()
user_data['logged_in']=True
user_data['token']=session_id
self.data_access.save_users_to_file()
self.logged_in_users[session_id] = username
return session_id
else:
return None

def logout(self, username):
users = self.data_access.users
user_data = users.get(username)
user_data['logged_in']=False
user_data['token']=None
self.data_access.save_users_to_file()

def logout(self, session_id):
if session_id in self.logged_in_users:
self.logged_in_users.pop(session_id)

def generate_session_id(self):
return str(uuid.uuid4())

def is_authenticated(self, username):
users = self.data_access.users
user_data = users.get(username)
return user_data['logged_in']==True
def is_authenticated(self, session_id):
return session_id in self.logged_in_users

def register(self, username, password):
users = self.data_access.users
users = self.data_access.load_users()
if username in users:
print(f"User {username} already exists.")
return False
hashed_password = self.hash_password(password)
new_user =User(username=username,password=password)
users[username] = {'password': hashed_password,'logged_in':False,'token':None}
self.data_access.save_users_to_file()
return new_user
users[username] = {'password': hashed_password}
self.data_access.save_users(users)
print(f"User {username} registered successfully.")
return True
Binary file not shown.