session-data: provide also allowed realms
authorJussi Laako <jussi.laako@linux.intel.com>
Tue, 26 Nov 2013 14:05:41 +0000 (16:05 +0200)
committerJussi Laako <jussi.laako@linux.intel.com>
Thu, 28 Nov 2013 14:49:39 +0000 (16:49 +0200)
include/gsignond/gsignond-session-data.h
src/common/gsignond-session-data.c
src/daemon/gsignond-auth-session.c

index 4ca4865..adf4b66 100644 (file)
@@ -71,6 +71,12 @@ void
 gsignond_session_data_set_realm (GSignondSessionData *data,
                                  const gchar *realm);
 
+GSequence *
+gsignond_session_data_get_allowed_realms (GSignondSessionData *data);
+
+void
+gsignond_session_data_set_allowed_realms (GSignondSessionData *data,
+                                          GSequence *realms);
 const gchar *
 gsignond_session_data_get_caption (GSignondSessionData *data);
 
index a8583f3..6e0b49f 100644 (file)
@@ -23,7 +23,8 @@
  * 02110-1301 USA
  */
 
-#include <gsignond/gsignond-session-data.h>
+#include "gsignond/gsignond-session-data.h"
+#include "gsignond/gsignond-utils.h"
 
 
 /**
@@ -132,6 +133,36 @@ gsignond_session_data_get_realm (GSignondSessionData *data)
 }
 
 /**
+ * gsignond_session_data_set_allowed_realms:
+ * @data: a #GSignondDictionary structure
+ * @realms: a #GSequence if allowed realms
+ *
+ * A setter for a list of realms allowed for the identity use.
+ */
+void
+gsignond_session_data_set_allowed_realms (GSignondSessionData *data,
+                                          GSequence *realms)
+{
+    gsignond_dictionary_set (data, "AllowedRealms",
+                             gsignond_sequence_to_variant (realms));
+}
+
+/**
+ * gsignond_session_data_get_allowed_realms:
+ * @data: a #GSignondDictionary structure
+ *
+ * A getter for a list of realms allowed for the identity use.
+ *
+ * Returns: (transfer full): #GSequence of allowed realms
+ */
+GSequence *
+gsignond_session_data_get_allowed_realms (GSignondSessionData *data)
+{
+    return gsignond_variant_to_sequence (gsignond_dictionary_get (data,
+                                                                  "AllowedRealms"));
+}
+
+/**
  * gsignond_session_data_set_realm:
  * @data: a #GSignondDictionary structure
  * @realm: a realm to set
index bf9edfb..b909bfa 100644 (file)
@@ -238,6 +238,12 @@ gsignond_auth_session_process (GSignondAuthSession *self,
             if (secret)
                 gsignond_session_data_set_secret (session_data, secret);
         }
+        if (gsignond_identity_info_get_realms (self->priv->identity_info)) {
+            GSequence *realms =
+                gsignond_identity_info_get_realms (self->priv->identity_info);
+            gsignond_session_data_set_allowed_realms (session_data,
+                                                      realms);
+        }
     }
 
     _ProcessData * data = g_slice_new0 (_ProcessData);