fixed multiple roles in 1 policy
This commit is contained in:
@@ -1,21 +1,14 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"authorization/db"
|
||||
"authorization/models"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type PermissionRepository struct {
|
||||
db *sql.DB
|
||||
}
|
||||
|
||||
func NewPermissionRepository(db *sql.DB) *PermissionRepository {
|
||||
return &PermissionRepository{db: db}
|
||||
}
|
||||
|
||||
// GetPermissionByResourceAndAction finds a permission by resource and action
|
||||
func (r *PermissionRepository) GetPermissionByResourceAndAction(resource, action string) (*models.Permission, error) {
|
||||
func GetPermissionByResourceAndAction(resource, action string) (*models.Permission, error) {
|
||||
query := `
|
||||
SELECT id, permission_name, description, resource, action
|
||||
FROM permissions
|
||||
@@ -24,7 +17,7 @@ func (r *PermissionRepository) GetPermissionByResourceAndAction(resource, action
|
||||
`
|
||||
|
||||
var perm models.Permission
|
||||
err := r.db.QueryRow(query, resource, action).Scan(
|
||||
err := db.DB.QueryRow(query, resource, action).Scan(
|
||||
&perm.ID,
|
||||
&perm.PermissionName,
|
||||
&perm.Description,
|
||||
@@ -43,14 +36,14 @@ func (r *PermissionRepository) GetPermissionByResourceAndAction(resource, action
|
||||
}
|
||||
|
||||
// GetPolicyAttributesByPermission retrieves all policy attributes for a permission
|
||||
func (r *PermissionRepository) GetPolicyAttributesByPermission(permissionID int) ([]models.PolicyAttribute, error) {
|
||||
func GetPolicyAttributesByPermission(permissionID int) ([]models.PolicyAttribute, error) {
|
||||
query := `
|
||||
SELECT id, attribute_name, attribute_type, comparison, attribute_value, permission_id
|
||||
FROM policy_attributes
|
||||
WHERE permission_id = ?
|
||||
`
|
||||
|
||||
rows, err := r.db.Query(query, permissionID)
|
||||
rows, err := db.DB.Query(query, permissionID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error querying policy attributes: %w", err)
|
||||
}
|
||||
@@ -77,14 +70,14 @@ func (r *PermissionRepository) GetPolicyAttributesByPermission(permissionID int)
|
||||
}
|
||||
|
||||
// GetUserAttributes retrieves all attributes for a user
|
||||
func (r *PermissionRepository) GetUserAttributes(userID string) (map[string]string, error) {
|
||||
func GetUserAttributes(userID string) (map[string]string, error) {
|
||||
query := `
|
||||
SELECT attribute_name, attribute_value
|
||||
FROM user_attributes
|
||||
WHERE user_id = ?
|
||||
`
|
||||
|
||||
rows, err := r.db.Query(query, userID)
|
||||
rows, err := db.DB.Query(query, userID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error querying user attributes: %w", err)
|
||||
}
|
||||
@@ -104,7 +97,7 @@ func (r *PermissionRepository) GetUserAttributes(userID string) (map[string]stri
|
||||
}
|
||||
|
||||
// GetUserByID retrieves user details
|
||||
func (r *PermissionRepository) GetUserByID(userID string) (*models.User, error) {
|
||||
func GetUserByID(userID string) (*models.User, error) {
|
||||
query := `
|
||||
SELECT user_id, first_name, middle_name, last_name, suffix, email_address,
|
||||
account_type, emp_id, reg, prov, aProv, mun, bgy, is_logged_in,
|
||||
@@ -116,7 +109,7 @@ func (r *PermissionRepository) GetUserByID(userID string) (*models.User, error)
|
||||
`
|
||||
|
||||
var user models.User
|
||||
err := r.db.QueryRow(query, userID).Scan(
|
||||
err := db.DB.QueryRow(query, userID).Scan(
|
||||
&user.UserID,
|
||||
&user.FirstName,
|
||||
&user.MiddleName,
|
||||
@@ -155,14 +148,14 @@ func (r *PermissionRepository) GetUserByID(userID string) (*models.User, error)
|
||||
}
|
||||
|
||||
// GetAllPermissions retrieves all permissions (for caching)
|
||||
func (r *PermissionRepository) GetAllPermissions() ([]models.Permission, error) {
|
||||
func GetAllPermissions() ([]models.Permission, error) {
|
||||
query := `
|
||||
SELECT id, permission_name, description, resource, action
|
||||
FROM permissions
|
||||
ORDER BY id
|
||||
`
|
||||
|
||||
rows, err := r.db.Query(query)
|
||||
rows, err := db.DB.Query(query)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error querying all permissions: %w", err)
|
||||
}
|
||||
@@ -188,14 +181,14 @@ func (r *PermissionRepository) GetAllPermissions() ([]models.Permission, error)
|
||||
}
|
||||
|
||||
// GetAllPolicyAttributes retrieves all policy attributes (for caching)
|
||||
func (r *PermissionRepository) GetAllPolicyAttributes() (map[int][]models.PolicyAttribute, error) {
|
||||
func GetAllPolicyAttributes() (map[int][]models.PolicyAttribute, error) {
|
||||
query := `
|
||||
SELECT id, attribute_name, attribute_type, comparison, attribute_value, permission_id
|
||||
FROM policy_attributes
|
||||
ORDER BY permission_id, id
|
||||
`
|
||||
|
||||
rows, err := r.db.Query(query)
|
||||
rows, err := db.DB.Query(query)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error querying all policy attributes: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user