pki_ca/ca_core/group_member.py

44 lines
1.3 KiB
Python

# ca_core/group_member.py
def add_group_member(cursor, group_id: int, member_id: int, role: str):
# Verify group exists and is active
cursor.execute("SELECT type, status FROM entity WHERE id=%s", (group_id,))
row = cursor.fetchone()
if not row or row["status"] != "active" or row["type"] != "group":
raise ValueError("Invalid or inactive group")
# Verify member exists and is active
cursor.execute("SELECT status FROM entity WHERE id=%s", (member_id,))
row = cursor.fetchone()
if not row or row["status"] != "active":
raise ValueError("Invalid or inactive member")
cursor.execute(
"INSERT INTO group_member (group_id, member_id, role) VALUES (%s, %s, %s)",
(group_id, member_id, role)
)
def remove_group_member(cursor, group_id: int, member_id: int):
cursor.execute(
"DELETE FROM group_member WHERE group_id=%s AND member_id=%s",
(group_id, member_id)
)
def get_groups_for_member(cursor, member_id: int):
cursor.execute(
"SELECT group_id, role FROM group_member WHERE member_id=%s",
(member_id,)
)
return cursor.fetchall()
def get_members_of_group(cursor, group_id: int):
cursor.execute(
"SELECT member_id, role FROM group_member WHERE group_id=%s",
(group_id,)
)
return cursor.fetchall()