diff --git a/common/helpers/tests.go b/common/helpers/tests.go
index 09296ea2..cea9b730 100644
--- a/common/helpers/tests.go
+++ b/common/helpers/tests.go
@@ -40,10 +40,12 @@ func Diff(a, b interface{}) string {
type HTTPEndpointCases []struct {
Description string
URL string
+ Header http.Header
+ JSONInput interface{}
+
ContentType string
StatusCode int
FirstLines []string
- JSONInput interface{}
JSONOutput interface{}
}
@@ -63,7 +65,13 @@ func TestHTTPEndpoints(t *testing.T, serverAddr net.Addr, cases HTTPEndpointCase
var resp *http.Response
var err error
if tc.JSONInput == nil {
- resp, err = http.Get(fmt.Sprintf("http://%s%s", serverAddr, tc.URL))
+ req, _ := http.NewRequest("GET",
+ fmt.Sprintf("http://%s%s", serverAddr, tc.URL),
+ nil)
+ if tc.Header != nil {
+ req.Header = tc.Header
+ }
+ resp, err = http.DefaultClient.Do(req)
if err != nil {
t.Fatalf("GET %s:\n%+v", tc.URL, err)
}
@@ -73,8 +81,14 @@ func TestHTTPEndpoints(t *testing.T, serverAddr net.Addr, cases HTTPEndpointCase
if err != nil {
t.Fatalf("Encode() error:\n%+v", err)
}
- resp, err = http.Post(fmt.Sprintf("http://%s%s", serverAddr, tc.URL),
- "application/json", payload)
+ req, _ := http.NewRequest("POST",
+ fmt.Sprintf("http://%s%s", serverAddr, tc.URL),
+ payload)
+ if tc.Header != nil {
+ req.Header = tc.Header
+ }
+ req.Header.Add("Content-Type", "application/json")
+ resp, err = http.DefaultClient.Do(req)
if err != nil {
t.Fatalf("POST %s:\n%+v", tc.URL, err)
}
diff --git a/console/data/avatars/accessorie_1.png b/console/data/avatars/accessorie_1.png
new file mode 100644
index 00000000..8b0df115
Binary files /dev/null and b/console/data/avatars/accessorie_1.png differ
diff --git a/console/data/avatars/accessorie_10.png b/console/data/avatars/accessorie_10.png
new file mode 100644
index 00000000..aa3cd89e
Binary files /dev/null and b/console/data/avatars/accessorie_10.png differ
diff --git a/console/data/avatars/accessorie_11.png b/console/data/avatars/accessorie_11.png
new file mode 100644
index 00000000..3dabc617
Binary files /dev/null and b/console/data/avatars/accessorie_11.png differ
diff --git a/console/data/avatars/accessorie_12.png b/console/data/avatars/accessorie_12.png
new file mode 100644
index 00000000..02a9600e
Binary files /dev/null and b/console/data/avatars/accessorie_12.png differ
diff --git a/console/data/avatars/accessorie_13.png b/console/data/avatars/accessorie_13.png
new file mode 100644
index 00000000..bde3cb9d
Binary files /dev/null and b/console/data/avatars/accessorie_13.png differ
diff --git a/console/data/avatars/accessorie_14.png b/console/data/avatars/accessorie_14.png
new file mode 100644
index 00000000..9c59c237
Binary files /dev/null and b/console/data/avatars/accessorie_14.png differ
diff --git a/console/data/avatars/accessorie_15.png b/console/data/avatars/accessorie_15.png
new file mode 100644
index 00000000..a61033d0
Binary files /dev/null and b/console/data/avatars/accessorie_15.png differ
diff --git a/console/data/avatars/accessorie_16.png b/console/data/avatars/accessorie_16.png
new file mode 100644
index 00000000..12561090
Binary files /dev/null and b/console/data/avatars/accessorie_16.png differ
diff --git a/console/data/avatars/accessorie_17.png b/console/data/avatars/accessorie_17.png
new file mode 100644
index 00000000..4d0f79e2
Binary files /dev/null and b/console/data/avatars/accessorie_17.png differ
diff --git a/console/data/avatars/accessorie_18.png b/console/data/avatars/accessorie_18.png
new file mode 100644
index 00000000..4d0f79e2
Binary files /dev/null and b/console/data/avatars/accessorie_18.png differ
diff --git a/console/data/avatars/accessorie_19.png b/console/data/avatars/accessorie_19.png
new file mode 100644
index 00000000..aac91a44
Binary files /dev/null and b/console/data/avatars/accessorie_19.png differ
diff --git a/console/data/avatars/accessorie_2.png b/console/data/avatars/accessorie_2.png
new file mode 100644
index 00000000..6c435f39
Binary files /dev/null and b/console/data/avatars/accessorie_2.png differ
diff --git a/console/data/avatars/accessorie_20.png b/console/data/avatars/accessorie_20.png
new file mode 100644
index 00000000..aac91a44
Binary files /dev/null and b/console/data/avatars/accessorie_20.png differ
diff --git a/console/data/avatars/accessorie_3.png b/console/data/avatars/accessorie_3.png
new file mode 100644
index 00000000..2aea9ab8
Binary files /dev/null and b/console/data/avatars/accessorie_3.png differ
diff --git a/console/data/avatars/accessorie_4.png b/console/data/avatars/accessorie_4.png
new file mode 100644
index 00000000..24d256d7
Binary files /dev/null and b/console/data/avatars/accessorie_4.png differ
diff --git a/console/data/avatars/accessorie_5.png b/console/data/avatars/accessorie_5.png
new file mode 100644
index 00000000..1cb53a13
Binary files /dev/null and b/console/data/avatars/accessorie_5.png differ
diff --git a/console/data/avatars/accessorie_6.png b/console/data/avatars/accessorie_6.png
new file mode 100644
index 00000000..24b1d6e6
Binary files /dev/null and b/console/data/avatars/accessorie_6.png differ
diff --git a/console/data/avatars/accessorie_7.png b/console/data/avatars/accessorie_7.png
new file mode 100644
index 00000000..cfdaaec7
Binary files /dev/null and b/console/data/avatars/accessorie_7.png differ
diff --git a/console/data/avatars/accessorie_8.png b/console/data/avatars/accessorie_8.png
new file mode 100644
index 00000000..b6cf1222
Binary files /dev/null and b/console/data/avatars/accessorie_8.png differ
diff --git a/console/data/avatars/accessorie_9.png b/console/data/avatars/accessorie_9.png
new file mode 100644
index 00000000..eb5a2ef6
Binary files /dev/null and b/console/data/avatars/accessorie_9.png differ
diff --git a/console/data/avatars/body_1.png b/console/data/avatars/body_1.png
new file mode 100644
index 00000000..f6ee3f35
Binary files /dev/null and b/console/data/avatars/body_1.png differ
diff --git a/console/data/avatars/body_10.png b/console/data/avatars/body_10.png
new file mode 100644
index 00000000..c5d8f099
Binary files /dev/null and b/console/data/avatars/body_10.png differ
diff --git a/console/data/avatars/body_11.png b/console/data/avatars/body_11.png
new file mode 100644
index 00000000..1013a693
Binary files /dev/null and b/console/data/avatars/body_11.png differ
diff --git a/console/data/avatars/body_12.png b/console/data/avatars/body_12.png
new file mode 100644
index 00000000..e550a0bd
Binary files /dev/null and b/console/data/avatars/body_12.png differ
diff --git a/console/data/avatars/body_13.png b/console/data/avatars/body_13.png
new file mode 100644
index 00000000..5fda68a4
Binary files /dev/null and b/console/data/avatars/body_13.png differ
diff --git a/console/data/avatars/body_14.png b/console/data/avatars/body_14.png
new file mode 100644
index 00000000..0f012094
Binary files /dev/null and b/console/data/avatars/body_14.png differ
diff --git a/console/data/avatars/body_15.png b/console/data/avatars/body_15.png
new file mode 100644
index 00000000..985a640c
Binary files /dev/null and b/console/data/avatars/body_15.png differ
diff --git a/console/data/avatars/body_2.png b/console/data/avatars/body_2.png
new file mode 100644
index 00000000..0c12c605
Binary files /dev/null and b/console/data/avatars/body_2.png differ
diff --git a/console/data/avatars/body_3.png b/console/data/avatars/body_3.png
new file mode 100644
index 00000000..dcaed91f
Binary files /dev/null and b/console/data/avatars/body_3.png differ
diff --git a/console/data/avatars/body_4.png b/console/data/avatars/body_4.png
new file mode 100644
index 00000000..049dfa88
Binary files /dev/null and b/console/data/avatars/body_4.png differ
diff --git a/console/data/avatars/body_5.png b/console/data/avatars/body_5.png
new file mode 100644
index 00000000..fc86ba58
Binary files /dev/null and b/console/data/avatars/body_5.png differ
diff --git a/console/data/avatars/body_6.png b/console/data/avatars/body_6.png
new file mode 100644
index 00000000..172ba4b3
Binary files /dev/null and b/console/data/avatars/body_6.png differ
diff --git a/console/data/avatars/body_7.png b/console/data/avatars/body_7.png
new file mode 100644
index 00000000..448513aa
Binary files /dev/null and b/console/data/avatars/body_7.png differ
diff --git a/console/data/avatars/body_8.png b/console/data/avatars/body_8.png
new file mode 100644
index 00000000..94ec54cd
Binary files /dev/null and b/console/data/avatars/body_8.png differ
diff --git a/console/data/avatars/body_9.png b/console/data/avatars/body_9.png
new file mode 100644
index 00000000..ac0e9187
Binary files /dev/null and b/console/data/avatars/body_9.png differ
diff --git a/console/data/avatars/eyes_1.png b/console/data/avatars/eyes_1.png
new file mode 100644
index 00000000..9ffa6913
Binary files /dev/null and b/console/data/avatars/eyes_1.png differ
diff --git a/console/data/avatars/eyes_10.png b/console/data/avatars/eyes_10.png
new file mode 100644
index 00000000..43b64fb8
Binary files /dev/null and b/console/data/avatars/eyes_10.png differ
diff --git a/console/data/avatars/eyes_11.png b/console/data/avatars/eyes_11.png
new file mode 100644
index 00000000..d2048eb2
Binary files /dev/null and b/console/data/avatars/eyes_11.png differ
diff --git a/console/data/avatars/eyes_12.png b/console/data/avatars/eyes_12.png
new file mode 100644
index 00000000..5c90af52
Binary files /dev/null and b/console/data/avatars/eyes_12.png differ
diff --git a/console/data/avatars/eyes_13.png b/console/data/avatars/eyes_13.png
new file mode 100644
index 00000000..b38cb8e6
Binary files /dev/null and b/console/data/avatars/eyes_13.png differ
diff --git a/console/data/avatars/eyes_14.png b/console/data/avatars/eyes_14.png
new file mode 100644
index 00000000..5b0f7686
Binary files /dev/null and b/console/data/avatars/eyes_14.png differ
diff --git a/console/data/avatars/eyes_15.png b/console/data/avatars/eyes_15.png
new file mode 100644
index 00000000..02429ec5
Binary files /dev/null and b/console/data/avatars/eyes_15.png differ
diff --git a/console/data/avatars/eyes_2.png b/console/data/avatars/eyes_2.png
new file mode 100644
index 00000000..ee7f1ec6
Binary files /dev/null and b/console/data/avatars/eyes_2.png differ
diff --git a/console/data/avatars/eyes_3.png b/console/data/avatars/eyes_3.png
new file mode 100644
index 00000000..3ca8d351
Binary files /dev/null and b/console/data/avatars/eyes_3.png differ
diff --git a/console/data/avatars/eyes_4.png b/console/data/avatars/eyes_4.png
new file mode 100644
index 00000000..8fed3541
Binary files /dev/null and b/console/data/avatars/eyes_4.png differ
diff --git a/console/data/avatars/eyes_5.png b/console/data/avatars/eyes_5.png
new file mode 100644
index 00000000..22f14c77
Binary files /dev/null and b/console/data/avatars/eyes_5.png differ
diff --git a/console/data/avatars/eyes_6.png b/console/data/avatars/eyes_6.png
new file mode 100644
index 00000000..b7027fd2
Binary files /dev/null and b/console/data/avatars/eyes_6.png differ
diff --git a/console/data/avatars/eyes_7.png b/console/data/avatars/eyes_7.png
new file mode 100644
index 00000000..5781bc76
Binary files /dev/null and b/console/data/avatars/eyes_7.png differ
diff --git a/console/data/avatars/eyes_8.png b/console/data/avatars/eyes_8.png
new file mode 100644
index 00000000..207959a3
Binary files /dev/null and b/console/data/avatars/eyes_8.png differ
diff --git a/console/data/avatars/eyes_9.png b/console/data/avatars/eyes_9.png
new file mode 100644
index 00000000..f0c10821
Binary files /dev/null and b/console/data/avatars/eyes_9.png differ
diff --git a/console/data/avatars/fur_1.png b/console/data/avatars/fur_1.png
new file mode 100644
index 00000000..d8262055
Binary files /dev/null and b/console/data/avatars/fur_1.png differ
diff --git a/console/data/avatars/fur_10.png b/console/data/avatars/fur_10.png
new file mode 100644
index 00000000..1825ef11
Binary files /dev/null and b/console/data/avatars/fur_10.png differ
diff --git a/console/data/avatars/fur_2.png b/console/data/avatars/fur_2.png
new file mode 100644
index 00000000..f72ad222
Binary files /dev/null and b/console/data/avatars/fur_2.png differ
diff --git a/console/data/avatars/fur_3.png b/console/data/avatars/fur_3.png
new file mode 100644
index 00000000..3929323a
Binary files /dev/null and b/console/data/avatars/fur_3.png differ
diff --git a/console/data/avatars/fur_4.png b/console/data/avatars/fur_4.png
new file mode 100644
index 00000000..b8a1ee39
Binary files /dev/null and b/console/data/avatars/fur_4.png differ
diff --git a/console/data/avatars/fur_5.png b/console/data/avatars/fur_5.png
new file mode 100644
index 00000000..2a027447
Binary files /dev/null and b/console/data/avatars/fur_5.png differ
diff --git a/console/data/avatars/fur_6.png b/console/data/avatars/fur_6.png
new file mode 100644
index 00000000..d41e1d21
Binary files /dev/null and b/console/data/avatars/fur_6.png differ
diff --git a/console/data/avatars/fur_7.png b/console/data/avatars/fur_7.png
new file mode 100644
index 00000000..87b2f6dd
Binary files /dev/null and b/console/data/avatars/fur_7.png differ
diff --git a/console/data/avatars/fur_8.png b/console/data/avatars/fur_8.png
new file mode 100644
index 00000000..7c236a3d
Binary files /dev/null and b/console/data/avatars/fur_8.png differ
diff --git a/console/data/avatars/fur_9.png b/console/data/avatars/fur_9.png
new file mode 100644
index 00000000..1593a3be
Binary files /dev/null and b/console/data/avatars/fur_9.png differ
diff --git a/console/data/avatars/mouth_1.png b/console/data/avatars/mouth_1.png
new file mode 100644
index 00000000..f5ed92d7
Binary files /dev/null and b/console/data/avatars/mouth_1.png differ
diff --git a/console/data/avatars/mouth_10.png b/console/data/avatars/mouth_10.png
new file mode 100644
index 00000000..75ed1481
Binary files /dev/null and b/console/data/avatars/mouth_10.png differ
diff --git a/console/data/avatars/mouth_2.png b/console/data/avatars/mouth_2.png
new file mode 100644
index 00000000..4456fba6
Binary files /dev/null and b/console/data/avatars/mouth_2.png differ
diff --git a/console/data/avatars/mouth_3.png b/console/data/avatars/mouth_3.png
new file mode 100644
index 00000000..759a045e
Binary files /dev/null and b/console/data/avatars/mouth_3.png differ
diff --git a/console/data/avatars/mouth_4.png b/console/data/avatars/mouth_4.png
new file mode 100644
index 00000000..04e9fddd
Binary files /dev/null and b/console/data/avatars/mouth_4.png differ
diff --git a/console/data/avatars/mouth_5.png b/console/data/avatars/mouth_5.png
new file mode 100644
index 00000000..5ed617a6
Binary files /dev/null and b/console/data/avatars/mouth_5.png differ
diff --git a/console/data/avatars/mouth_6.png b/console/data/avatars/mouth_6.png
new file mode 100644
index 00000000..680eda78
Binary files /dev/null and b/console/data/avatars/mouth_6.png differ
diff --git a/console/data/avatars/mouth_7.png b/console/data/avatars/mouth_7.png
new file mode 100644
index 00000000..9fbf5970
Binary files /dev/null and b/console/data/avatars/mouth_7.png differ
diff --git a/console/data/avatars/mouth_8.png b/console/data/avatars/mouth_8.png
new file mode 100644
index 00000000..2a8407df
Binary files /dev/null and b/console/data/avatars/mouth_8.png differ
diff --git a/console/data/avatars/mouth_9.png b/console/data/avatars/mouth_9.png
new file mode 100644
index 00000000..21751e78
Binary files /dev/null and b/console/data/avatars/mouth_9.png differ
diff --git a/console/data/avatars/partlist.txt b/console/data/avatars/partlist.txt
new file mode 100644
index 00000000..0ecc9219
--- /dev/null
+++ b/console/data/avatars/partlist.txt
@@ -0,0 +1,5 @@
+body
+fur
+eyes
+mouth
+accessorie
diff --git a/console/data/docs/02-configuration.md b/console/data/docs/02-configuration.md
index 44399af2..fbbbcafa 100644
--- a/console/data/docs/02-configuration.md
+++ b/console/data/docs/02-configuration.md
@@ -334,3 +334,27 @@ resolutions:
The main components of the console service are `http` and `console`.
`http` accepts the [same configuration](#http) as for the inlet
service. The `console` has no configuration.
+
+### Authentication
+
+The console does not store user identities and is unable to
+authenticate them. It expects an authenticating proxy will add some
+headers to the API endpoints:
+
+- `X-Akvorado-User-Login` is the user login,
+- `X-Akvorado-User-Name` is the user display name,
+- `X-Akvorado-User-Email` is the user email address,
+- `X-Akvorado-User-Avatar` is the user's avatar URL,
+- `X-Akvorago-User-Logout` is a link to the logout link.
+
+Only the login header is mandatory.
+
+There are several systems providing user management with all the bells
+and whistles, including OAuth2 support, multi-factor authentication
+and API tokens. Here is a short selection of solutions able to act as
+an authenticating reverse-proxy for Akvorado:
+
+- [Authentik](https://goauthentik.io/)
+- [Authelia](https://www.authelia.com/)
+- [Ory](https://www.ory.sh/) (no web interface provided in the open source edition)
+- [Keycloak](https://www.keycloak.org/)
diff --git a/console/frontend/src/components/ActiveUser.vue b/console/frontend/src/components/ActiveUser.vue
new file mode 100644
index 00000000..0bbade08
--- /dev/null
+++ b/console/frontend/src/components/ActiveUser.vue
@@ -0,0 +1,57 @@
+
+
+
+
+