From: Andrea Zagli <azagli@libero.it>
Date: Fri, 25 Jun 2010 17:30:49 +0000 (+0200)
Subject: Added functions Autoz::get_role_from_id and Autoz::get_resource_from_id.
X-Git-Tag: 0.0.1~13
X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=2b9aa449f4dab05a68f7085de75b5c6555041967;p=zakautho%2Flibzakautho

Added functions Autoz::get_role_from_id and Autoz::get_resource_from_id.
Some adjustments.
---

diff --git a/src/autoz.c b/src/autoz.c
index c52fa99..5a3430c 100644
--- a/src/autoz.c
+++ b/src/autoz.c
@@ -117,6 +117,9 @@ autoz_add_role_with_parents (Autoz *autoz, AutozIRole *irole, ...)
 
 	const gchar *role_id;
 
+	g_return_if_fail (IS_AUTOZ (autoz));
+	g_return_if_fail (AUTOZ_IS_IROLE (irole));
+
 	role_id = autoz_irole_get_role_id (irole);
 
 	if (g_hash_table_lookup (priv->roles, role_id) == NULL)
@@ -151,6 +154,9 @@ autoz_add_resource (Autoz *autoz, AutozIResource *iresource)
 {
 	AutozPrivate *priv = AUTOZ_GET_PRIVATE (autoz);
 
+	g_return_if_fail (IS_AUTOZ (autoz));
+	g_return_if_fail (AUTOZ_IS_IRESOURCE (iresource));
+
 	const gchar *resource_id;
 
 	resource_id = autoz_iresource_get_resource_id (iresource);
@@ -167,10 +173,34 @@ autoz_add_resource (Autoz *autoz, AutozIResource *iresource)
 		}
 }
 
+AutozIRole
+*autoz_get_role_from_id (Autoz *autoz, const gchar *role_id)
+{
+	AutozPrivate *priv;
+
+	g_return_val_if_fail (IS_AUTOZ (autoz), NULL);
+
+	priv = AUTOZ_GET_PRIVATE (autoz);
+
+	return g_hash_table_lookup (priv->roles, role_id);
+}
+
+AutozIResource
+*autoz_get_resource_from_id (Autoz *autoz, const gchar *resource_id)
+{
+	AutozPrivate *priv;
+
+	g_return_val_if_fail (IS_AUTOZ (autoz), NULL);
+
+	priv = AUTOZ_GET_PRIVATE (autoz);
+
+	return g_hash_table_lookup (priv->resources, resource_id);
+}
+
 void
 autoz_allow (Autoz *autoz, AutozIRole *irole, AutozIResource *iresource)
 {
-	AutozPrivate *priv = AUTOZ_GET_PRIVATE (autoz);
+	AutozPrivate *priv;
 
 	Role *role;
 	Resource *resource;
@@ -179,6 +209,11 @@ autoz_allow (Autoz *autoz, AutozIRole *irole, AutozIResource *iresource)
 
 	gchar *str_id;
 
+	g_return_if_fail (IS_AUTOZ (autoz));
+	g_return_if_fail (AUTOZ_IS_IRESOURCE (iresource));
+
+	priv = AUTOZ_GET_PRIVATE (autoz);
+
 	/* check if exists */
 	role = g_hash_table_lookup (priv->roles, autoz_irole_get_role_id (irole));
 	if (role == NULL)
@@ -259,8 +294,13 @@ autoz_is_allowed (Autoz *autoz, AutozIRole *irole, AutozIResource *iresource)
 
 	gchar *str_id;
 
-	AutozPrivate *priv = AUTOZ_GET_PRIVATE (autoz);
+	AutozPrivate *priv;
+
+	g_return_val_if_fail (IS_AUTOZ (autoz), FALSE);
+	g_return_val_if_fail (AUTOZ_IS_IROLE (irole), FALSE);
+	g_return_val_if_fail (AUTOZ_IS_IRESOURCE (iresource), FALSE);
 
+	priv = AUTOZ_GET_PRIVATE (autoz);
 	ret = FALSE;
 
 	role = g_hash_table_lookup (priv->roles, autoz_irole_get_role_id (irole));
diff --git a/src/autoz.h b/src/autoz.h
index 5d645b3..0490ac2 100644
--- a/src/autoz.h
+++ b/src/autoz.h
@@ -58,6 +58,9 @@ Autoz *autoz_new (void);
 void autoz_add_role (Autoz *autoz, AutozIRole *irole);
 void autoz_add_role_with_parents (Autoz *autoz, AutozIRole *irole, ...);
 
+AutozIRole *autoz_get_role_from_id (Autoz *autoz, const gchar *role_id);
+AutozIResource *autoz_get_resource_from_id (Autoz *autoz, const gchar *resource_id);
+
 void autoz_add_resource (Autoz *autoz, AutozIResource *iresource);
 
 void autoz_allow (Autoz *autoz, AutozIRole *irole, AutozIResource *iresource);