summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-09-26 10:46:27 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-10-01 12:32:20 +0200
commit8fb8ea2f9cec925ac58ef6dce9d114899eaf962e (patch)
tree64854062a9184cc957b7a70a422a609b3576fa32
parentb0d75f5b0ccb4bbe90663bb22dc92daece8c5fcd (diff)
gui: Add a gsettings schema
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac3
-rw-r--r--eu.planete_kraus.Disfluid.gschema.xml.in96
-rw-r--r--guix/vkraus/packages/disfluid.scm5
-rw-r--r--po/POTFILES.in1
-rw-r--r--settings.am20
6 files changed, 124 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index 07e2128..ec7d6c1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,6 +36,7 @@ include src/Makefile.am
include doc/Makefile.am
include tests/Makefile.am
include icons.am
+include settings.am
EXTRA_DIST += $(top_srcdir)/.version $(top_srcdir)/.release-date
BUILT_SOURCES += $(top_srcdir)/.version $(top_srcdir)/.release-date
diff --git a/configure.ac b/configure.ac
index 379d65a..e4bc52b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -45,8 +45,9 @@ GUILE_MODULE_REQUIRED([turtle fromrdf])
GUILE_MODULE_REQUIRED([nquads tordf])
GUILE_MODULE_REQUIRED([jsonld])
GUILE_MODULE_REQUIRED([gi])
+GLIB_GSETTINGS
-AC_CONFIG_FILES([Makefile po/Makefile.in man/Makefile])
+AC_CONFIG_FILES([Makefile po/Makefile.in man/Makefile eu.planete_kraus.Disfluid.gschema.xml])
AC_CONFIG_FILES([man/reset-env], [chmod +x man/reset-env])
AC_CONFIG_FILES([pre-inst-env], [chmod +x pre-inst-env])
AC_OUTPUT
diff --git a/eu.planete_kraus.Disfluid.gschema.xml.in b/eu.planete_kraus.Disfluid.gschema.xml.in
new file mode 100644
index 0000000..c84aca8
--- /dev/null
+++ b/eu.planete_kraus.Disfluid.gschema.xml.in
@@ -0,0 +1,96 @@
+<schemalist>
+ <schema id="eu.planete_kraus.Disfluid.Client" gettext-domain="@PACKAGE@">
+ <key name="client-id" type="s">
+ <summary>Client ID</summary>
+ <description>
+ The client application needs a public presence on the
+ world-wide web so that the identity provider can check it is
+ not spoofed; this is the public URI where to obtain
+ machine-readable information about the application
+ </description>
+ <default>'https://webid-oidc-demo.planete-kraus.eu/example-application#id'</default>
+ </key>
+ <key name="key-pair" type="s">
+ <summary>Client key pair</summary>
+ <description>
+ When creating new accounts, use this key pair to certify them
+ (in the JWK format); an empty value will generate a new key
+ pair
+ </description>
+ <default>''</default>
+ </key>
+ <key name="redirect-uri" type="s">
+ <summary>Client redirect URI</summary>
+ <description>
+ When receiving an authorization, the user’s browser is
+ redirected to this URI, where the user should be presented
+ with a code to paste into the application
+ </description>
+ <default>'https://webid-oidc-demo.planete-kraus.eu/authorized'</default>
+ </key>
+ </schema>
+ <schema id="eu.planete_kraus.Disfluid.Account">
+ <key name="subject" type="s">
+ <summary>Account webid</summary>
+ <description>
+ The accounts are tied to a particular user, through a webid
+ </description>
+ <default>''</default>
+ </key>
+ <key name="issuer" type="s">
+ <summary>Identity provider</summary>
+ <description>
+ The account is certified by the server running at this URI
+ </description>
+ <default>''</default>
+ </key>
+ <key name="key-pair" type="s">
+ <summary>JWK key pair</summary>
+ <description>
+ Our account is certified to be used with a key pair that the
+ application owns; the key is in the JWK format
+ </description>
+ <default>''</default>
+ </key>
+ <key name="id-token-header" type="s">
+ <summary>Header of the identity token</summary>
+ <description>
+ How we verified the signature of the ID token; if the account
+ needs to be refreshed then it may be empty
+ </description>
+ <default>''</default>
+ </key>
+ <key name="id-token" type="s">
+ <summary>Identity token</summary>
+ <description>
+ The identity provider sent an ID token to remind us who you
+ are; if the account needs to be refreshed it may be empty
+ </description>
+ <default>''</default>
+ </key>
+ <key name="access-token" type="s">
+ <summary>Access token</summary>
+ <description>
+ This token is presented to the resource server when we
+ authentify; it is bound to a key whose possession we need to
+ prove at the same time; if the account needs to be refreshed
+ it may be empty
+ </description>
+ <default>''</default>
+ </key>
+ <key name="refresh-token" type="s">
+ <summary>Refresh token</summary>
+ <description>
+ When the account expires, we present this token to the
+ identity provider to refresh it; it is also bound to the key
+ pair; if the user did not give us refresh permission it may be
+ empty
+ </description>
+ <default>''</default>
+ </key>
+ </schema>
+ <schema id="eu.planete_kraus.Disfluid" path="/eu/planete_kraus/Disfluid/">
+ <child name="client" schema="eu.planete_kraus.Disfluid.Client" />
+ <child name="main-account" schema="eu.planete_kraus.Disfluid.Account" />
+ </schema>
+</schemalist>
diff --git a/guix/vkraus/packages/disfluid.scm b/guix/vkraus/packages/disfluid.scm
index f69248a..e26f604 100644
--- a/guix/vkraus/packages/disfluid.scm
+++ b/guix/vkraus/packages/disfluid.scm
@@ -23,6 +23,7 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages base)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
#:use-module (gnu packages nettle)
@@ -118,7 +119,9 @@
("gettext" ,gnu-gettext)
("coreutils" ,coreutils) ;; for link (wrap-program)
("help2man" ,help2man)
- ("which" ,which)))
+ ("which" ,which)
+ ("glib" ,glib)
+ ("glib" ,glib "bin")))
(inputs `(("guile" ,guile-3.0)
("guile-json" ,guile-json-4)
("guile-rdf" ,guile-rdf)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ae71785..a1bbceb 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -15,6 +15,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# List of source files which contain translatable strings.
+eu.planete_kraus.Disfluid.gschema.xml.in
src/hash/libwebidoidc-hash.c
src/jwk/generate-key.c
src/jwk/libwebidoidc-jwk.c
diff --git a/settings.am b/settings.am
new file mode 100644
index 0000000..06642db
--- /dev/null
+++ b/settings.am
@@ -0,0 +1,20 @@
+# disfluid, implementation of the Solid specification
+# Copyright (C) 2021 Vivien Kraus
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+gsettings_SCHEMAS = %reldir%/eu.planete_kraus.Disfluid.gschema.xml
+EXTRA_DIST += %reldir%/eu.planete_kraus.Disfluid.gschema.xml.in
+
+@GSETTINGS_RULES@