diff --git a/.github/workflows/add-comment-from-tag.yml b/.github/workflows/add-comment-from-tag.yml deleted file mode 100644 index 64d7932f..00000000 --- a/.github/workflows/add-comment-from-tag.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Based on a label applied to an issue, the bot will add a comment with some additional info -name: 🎯 Auto-Reply to Labeled Tickets -on: - issues: - types: - - labeled - - unlabeled - pull_request_target: - types: - - labeled - - unlabeled -permissions: - contents: read - issues: write - pull-requests: write - -jobs: - comment: - runs-on: ubuntu-20.04 - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Label Commenter - uses: peaceiris/actions-label-commenter@v1 - with: - config_file: .github/issue-auto-comments.yml - github_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/close-incomplete-issues.yml b/.github/workflows/close-incomplete-issues.yml deleted file mode 100644 index 61331f6c..00000000 --- a/.github/workflows/close-incomplete-issues.yml +++ /dev/null @@ -1,21 +0,0 @@ -# Close any issue that does not match any of the issue templates -name: 🎯 Close Incomplete Issues -on: - issues: - types: [opened, edited] -jobs: - auto_close_issues: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v1 - - name: Automatically close issues that don't follow the issue template - uses: lucasbento/auto-close-issues@v1.0.2 - with: - github-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - closed-issues-label: '🙁 Auto-Closed' - issue-close-message: | - Hello @${issue.user.login} 👋 - Unfortunately your issue does not follow the format outlined in the template, and has therefore been auto-closed. - To ensure that all relevant info is included, please either update or recreate your issue, and complete the sub-headings provided. - Thank you :) diff --git a/.github/workflows/generate-credits.yml b/.github/workflows/generate-credits.yml deleted file mode 100644 index 0ec6a208..00000000 --- a/.github/workflows/generate-credits.yml +++ /dev/null @@ -1,68 +0,0 @@ -# Inserts list of contributors and community members into ./docs/credits.md -# Also generates an SVG showing all contributors, which is embedded into readme -name: 📊 Generate Contributor Credits -on: - workflow_dispatch: # Manual dispatch - schedule: - - cron: '0 1 * * 0' # At 01:00 on Sunday. -jobs: - # Job #1 - Generate an embedded SVG asset, showing all contributors - generate-contributors: - runs-on: ubuntu-latest - steps: - - uses: bubkoo/contributors-list@v1 - with: - GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - svgPath: docs/assets/CONTRIBUTORS.svg - affiliation: all - includeBots: false - excludeUsers: BeginCI snyk-bot - avatarSize: 96 - userNameHeight: 20 - svgWidth: 830 - commitMessage: ':blue_heart: Updates contributor SVG' - # Job #2 - Fetches sponsors and inserts into readme and credits page - insert-sponsors: - runs-on: ubuntu-latest - steps: - - name: Checkout 🛎️ - uses: actions/checkout@v2 - - name: Generate Sponsors in Readme 💖 - uses: JamesIves/github-sponsors-readme-action@1.0.5 - with: - token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - file: 'README.md' - - name: Generate Sponsors in Credits 💖 - uses: JamesIves/github-sponsors-readme-action@1.0.5 - with: - token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - file: 'docs/credits.md' - # Job #3 - Update the Credits page - insert-credits: - runs-on: ubuntu-latest - name: Inserts contributors into credits.md - steps: - - name: Contributer List - Credits Page - uses: akhilmhdh/contributors-readme-action@v2.3.6 - env: - GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - with: - image_size: 80 - readme_path: docs/credits.md - columns_per_row: 6 - commit_message: ':purple_heart: Updates contributors list' - collaborators: all - committer_username: liss-bot - committer_email: liss-bot@d0h.co - - name: Sponsors List - Readme - uses: akhilmhdh/contributors-readme-action@v2.2 - env: - GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - with: - image_size: 80 - readme_path: README.md - columns_per_row: 6 - commit_message: ':yellow_heart: Updates sponsors table' - committer_username: liss-bot - committer_email: liss-bot@d0h.co - diff --git a/.github/workflows/release-commenter.yml b/.github/workflows/release-commenter.yml deleted file mode 100644 index eff58e1c..00000000 --- a/.github/workflows/release-commenter.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Adds a comment to all issues & PRs that were fixed on a new release -name: 💡 Update Issue after Release -on: - release: - types: [published] -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: apexskier/github-release-commenter@v1 - with: - GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - label-template: 🛩️ Released {release_tag} - comment-template: | - **This has now been released in {release_name} ✨** - - If you haven't done so already, please [update your instance](https://github.com/Lissy93/dashy/blob/master/docs/management.md#updating) to `{release_tag}` or later. See {release_link} for full info. diff --git a/README.md b/README.md index 65390088..8c820fa6 100644 --- a/README.md +++ b/README.md @@ -524,142 +524,11 @@ Thank you so much to everyone who has helped with Dashy so far; every contributi #### Sponsors Huge thanks to the sponsors helping to support Dashy's development! - - - - - - - - - - - - - - - - - - - - - - - -
- - vincentkoc -
- Vincent Koc -
-
- - anivar -
- Anivar Aravind -
-
- - BrianCurliss -
- Brian Curliss -
-
- - AnandChowdhary -
- Anand Chowdhary -
-
- - bile0026 -
- Zach Biles -
-
- - UlisesGascon -
- Ulises Gascón -
-
- - InDieTasten -
- InDieTasten -
-
- - araguaci -
- Araguaci -
-
- - bmcgonag -
- Brian McGonagill -
-
- - vlad-tim -
- Vlad -
-
- - helixzz -
- HeliXZz -
-
- - mryesiller -
- Göksel Yeşiller -
-
- - undefined -
- Undefined -
-
- - OlliVHH -
- HamburgerJung -
-
- - frankdez93 -
- Frankdez93 -
-
- - hudsonrock-partnerships -
- Hudsonrock-partnerships -
-
- - gl0bal01 -
- Gl0bal01 💖 龴ↀ◡ↀ龴 -
-
- - phishdestroy -
- PhishDestroy -
-
- + +![sponsors badge](https://readme-contribs.as93.net/sponsors/lissy93) #### Contributors -[![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg)](./docs/credits.md) +[![contributors badge](https://readme-contribs.as93.net/contributors/lissy93/dashy?perRow=12&limit=96)](./docs/credits.md) #### Stats [![Stats](https://repobeats.axiom.co/api/embed/48546e3c768d38c450ba136e32c0992bcf58ad73.svg "Repobeats analytics image")](https://github.com/Lissy93/dashy/blob/master/docs/credits.md) diff --git a/docs/authentication.md b/docs/authentication.md index 5147d9b3..35846b1a 100644 --- a/docs/authentication.md +++ b/docs/authentication.md @@ -286,6 +286,7 @@ appConfig: clientId: [registered client id] endpoint: [OIDC endpoint] scope: [The scope(s) to request from the OIDC provider] + adminGroup: admin ``` Because Dashy is a SPA, a [public client](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1) registration with PKCE is needed. diff --git a/docs/configuring.md b/docs/configuring.md index a058d072..62b876f7 100644 --- a/docs/configuring.md +++ b/docs/configuring.md @@ -204,6 +204,8 @@ For more info, see the **[Authentication Docs](/docs/authentication.md)** --- | --- | --- | --- **`clientId`** | `string` | Required | The client id registered in the OIDC server **`endpoint`** | `string` | Required | The URL of the OIDC server that should be used. +**`adminRole`** | `string` | _Optional_ | The role that will be considered as admin. +**`adminGroup`** | `string` | _Optional_ | The group that will be considered as admin. **`scope`** | `string` | Required | The scope(s) to request from the OIDC provider **[⬆️ Back to Top](#configuring)** diff --git a/docs/credits.md b/docs/credits.md index d5e8411d..9a6e8b1f 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -1,1435 +1,19 @@ # Credits ## Sponsors - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - vincentkoc -
- Vincent Koc -
-
- - anivar -
- Anivar Aravind -
-
- - BrianCurliss -
- Brian Curliss -
-
- - AnandChowdhary -
- Anand Chowdhary -
-
- - bile0026 -
- Zach Biles -
-
- - UlisesGascon -
- Ulises Gascón -
-
- - InDieTasten -
- Null -
-
- - araguaci -
- Null -
-
- - bmcgonag -
- Brian McGonagill -
-
- - vlad-tim -
- Vlad -
-
- - helixzz -
- HeliXZz -
-
- - mryesiller -
- Göksel Yeşiller -
-
- - getumbrel -
- Umbrel -
-
- - OlliVHH -
- HamburgerJung -
-
- - frankdez93 -
- Null -
-
- - terminaltrove -
- Terminal Trove -
-
- - hudsonrock-partnerships -
- Null -
-
- - gl0bal01 -
- Gl0bal01 💖 龴ↀ◡ↀ龴 -
-
- - phishdestroy -
- PhishDestroy -
-
- - Quad4-Software -
- Quad4 Software -
-
- + +![Sponsors](https://readme-contribs.as93.net/sponsors/lissy93) + ## Contributors - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Lissy93 -
- Alicia Sykes -
-
- - liss-bot -
- Alicia Bot -
-
- - CrazyWolf13 -
- Tobias -
-
- - marekful -
- Marcell Fülöp -
-
- - EVOTk -
- EVOTk -
-
- - snyk-bot -
- Snyk Bot -
-
- - azerioxal -
- Kenneth Church -
-
- - m42e -
- Matthias Bilger -
-
- - pinarruiz -
- Alejandro Pinar Ruiz -
-
- - imjimmeh -
- Null -
-
- - kashif-se -
- Kashif Sohail -
-
- - lammersbjorn -
- Bjorn Lammers -
-
- - josuablejeru -
- Josua Blejeru -
-
- - ThrustVector -
- Johan Bengtsson -
-
- - albcp -
- Alberto -
-
- - Cereal916 -
- Kristian Brasel -
-
- - lordpansar -
- Magnus Sundström -
-
- - jammo2k5 -
- Jammo2k5 -
-
- - evroon -
- Erik Vroon -
-
- - alhazmy13 -
- Abdullah Alhazmy -
-
- - alayham -
- Al-Ayham Saleh -
-
- - altearius -
- Chris Nielsen -
-
- - LinuxSBC -
- LinuxSBC -
-
- - UrekD -
- UrekD -
-
- - zcq100 -
- Null -
-
- - z3r0l1nk -
- Mihai -
-
- - hockwill -
- Null -
-
- - wozboz -
- Null -
-
- - conlan0 -
- Null -
-
- - Totto16 -
- Totto16 -
-
- - toddejohnson -
- Todd Johnson -
-
- - remygrandin -
- Remygrandin -
-
- - Tracreed -
- David Alasow -
-
- - aviolaris -
- Andreas Violaris -
-
- - dasunsrule32 -
- Aaron Echols -
-
- - rubenandre -
- Rúben Silva -
-
- - rtm516 -
- Rtm516 -
-
- - onedr0p -
- ᗪєνιη ᗷυнʟ -
-
- - he0119 -
- Uy/sun -
-
- - stanly0726 -
- Stanly0726 -
-
- - kt-alt -
- Null -
-
- - Bogyie -
- Bogyeong Kim -
-
- - alucarddelta -
- Brent -
-
- - webysther -
- Webysther Sperandio -
-
- - jtuzar -
- Jakub Tuzar -
-
- - lucolvin -
- Luke -
-
- - Kf637 -
- Kf637 -
-
- - berksmbl -
- Berk Sümbül -
-
- - alexdelprete -
- Alessandro Del Prete -
-
- - itsmejoeeey -
- Joey Miller -
-
- - k073l -
- Null -
-
- - m42cel -
- Null -
-
- - mmihaly -
- Null -
-
- - patrickheeney -
- Patrick Heeney -
-
- - rokiden -
- Denis Kazimirov -
-
- - zigotica -
- Sergi Meseguer -
-
- - ssrangisetti -
- Null -
-
- - BySempron -
- Sergio -
-
- - a-mnich -
- Alexander Mnich -
-
- - BOZG -
- Stephen Rigney -
-
- - moemoeq -
- CHAIYEON CHO -
-
- - daentech -
- Dan Gilbert -
-
- - deneor -
- Null -
-
- - GuilhermeLCS95 -
- GuilhermeLCS -
-
- - kit494way -
- KITAGAWA Yasutaka -
-
- - TJonesy -
- Taylor Jones -
-
- - twsouthwick -
- Taylor Southwick -
-
- - thomaswienecke -
- Thomas Wienecke -
-
- - armageddon421 -
- Armageddon421 -
-
- - domportera -
- Dom -
-
- - hockeymikey -
- Null -
-
- - sachahjkl -
- Sacha -
-
- - shazzx -
- Shazz -
-
- - ThinkSalat -
- Shawn Salat -
-
- - sxravan -
- Shravan Dwarka -
-
- - royshreyaa -
- Null -
-
- - Smexhy -
- Null -
-
- - stavros-k -
- Stavros Kois -
-
- - XenonR -
- Steffen Schmidt -
-
- - StevKast -
- Steven Kast -
-
- - ThibautSnoeijs -
- Thibaut -
-
- - vishwamartur -
- Vishwanath Martur -
-
- - AmadeusGraves -
- Ángel Fernández Sánchez -
-
- - turnrye -
- Ryan Turner -
-
- - rubjo -
- Null -
-
- - RoubenRehman -
- Rouben Rehman -
-
- - RobLoach -
- Rob Loach -
-
- - PrynsTag -
- Prince Carl Velasco -
-
- - PlusaN -
- Andrey -
-
- - oka4shi -
- OKAMOTO Shigehiro -
-
- - bubylou -
- Nicholas Malcolm -
-
- - michaelfeinbier -
- Michael Feinbier -
-
- - stinkybernie -
- Michael D -
-
- - miclav -
- Michael Lavaire -
-
- - click0 -
- Vladyslav V. Prodan -
-
- - tazboyz16 -
- Null -
-
- - sur1v -
- José Ignacio -
-
- - soaibsafi -
- Soaibuzzaman -
-
- - sasetz -
- Kirill Putiatin -
-
- - s-weigand -
- Sebastian Weigand -
-
- - pablomalo -
- Null -
-
- - nOw-Ay -
- Noé Busson -
-
- - markxoe -
- Mark Oude Elberink -
-
- - ivyturner -
- Ivy Rose Turner -
-
- - kxenoxx -
- Kxenox -
-
- - jrobles98 -
- Null -
-
- - jnach -
- Jnach -
-
- - imlonghao -
- Imlonghao -
-
- - icy-comet -
- Aniket Teredesai -
-
- - huangshaohuai -
- Null -
-
- - flechaig -
- Null -
-
- - baifengheixi -
- Null -
-
- - aypt -
- Null -
-
- - allozavrr -
- Null -
-
- - XertDev -
- Xert -
-
- - willbrowningme -
- Will Browning -
-
- - pvillaverde -
- Fedello -
-
- - emiran-orange -
- Null -
-
- - edugof -
- Eduardo Gomez -
-
- - Dylan-Bs -
- Dylan Bersans -
-
- - dyauss -
- Thandy Norberto -
-
- - ddenev -
- Dragomir Denev -
-
- - dougaldhub -
- Doug Lock -
-
- - dkyeremeh -
- Desmond Kyeremeh -
-
- - deepsourcebot -
- DeepSource Bot -
-
- - DawidPietrykowski -
- Null -
-
- - skaarj1989 -
- David -
-
- - The127 -
- Darkarotte -
-
- - yeralin -
- Daniyar Yeralin -
-
- - danfein -
- Dan -
-
- - clsty -
- Celestial.y -
-
- - bskim45 -
- Bumsoo Kim -
-
- - BhasherBEL -
- Brieuc Dubois -
-
- - BeginCI -
- Begin -
-
- - BRAVO68WEB -
- Jyotirmoy Bandyopadhyaya [Bravo68] -
-
- - AaronPorts -
- Artyom -
-
- - alydemah -
- Aly Mohamed -
-
- - 5idereal -
- 5idereal -
-
- - 0n1cOn3 -
- 0n1cOn3 -
-
- - imsakg -
- Mert Sefa AKGUN -
-
- - maximemoreillon -
- Maxime Moreillon -
-
- - Glitch3dPenguin -
- Max Kulik -
-
- - pho3nixf1re -
- Matthew Turney -
-
- - markusdd -
- Markus Krause -
-
- - asenov -
- Мирослав Асенов -
-
- - luispabon -
- Luis Pabon -
-
- - LeoColman -
- Leonardo Colman Lopes -
-
- - KierenConnell -
- Kieren Connell -
-
- - kieraneglin -
- Kieran -
-
- - SharpCoder -
- Josh Cole -
-
- - johnhorton2010 -
- John Horton -
-
- - Singebob -
- Jeremy Chauvin -
-
- - Hellhium -
- Jemy SCHNEPP -
-
- - jjmung -
- JJ Munguia -
-
- - b1thunt3r -
- Ishan Jain -
-
- - Compunctus -
- Iaroslav Dronskii -
-
- - nealian -
- Ian Neal -
-
- - ip2location -
- IP2Location -
-
- - FraglyG -
- Hendrik Strydom -
-
- - hubortje -
- Harald Töpfer -
-
- - gbrown09 -
- Garrett Brown -
-
- - FormatToday -
- FormatToday -
-
- -## Helpful Users - - - - - - - - - -
- - evotk -
- Evotk -
-
- - shadowking001 -
- LawrenceP. -
-
- - urekd -
- Urekd -
-
- - dylanbeme -
- DylanH -
-
- - milesteg1 -
- Milesteg1 -
-
- - lu4t -
- Lu4t -
-
- - -## Bots - - - - - - - - - - - -
- - liss-bot -
- Alicia Bot -
-
- - snyk-bot -
- Snyk Bot -
-
- - netlify -
- Netlify -
-
- - viezly -
- Viezly -
-
- - muse-dev -
- MuseDev -
-
- - github-actions[bot] -
- github-actions[bot] -
-
- - dependabot[bot] -
- dependabot[bot] -
-
- - -> The above section is auto-generated, using [contribute-list](https://github.com/marketplace/actions/contribute-list) by @akhilmhdh. +![Contributors](https://readme-contribs.as93.net/contributors/lissy93/dashy?perRow=12&limit=96) ## Newest Stargazers -[![Recent Star Gazers](https://reporoster.com/stars/dark/Lissy93/dashy)](https://github.com/Lissy93/dashy/stargazers) +[![Stargazers](https://readme-contribs.as93.net/stargazers/lissy93/dashy?perRow=16&fontSize=10&limit=96)](https://github.com/Lissy93/dashy/stargazers) -[![Recent Forkers](https://reporoster.com/forks/dark/lissy93/dashy)](https://github.com/lissy93/dashy/network/members) +[![Forkers](https://readme-contribs.as93.net/forkers/lissy93/dashy?perRow=16&fontSize=10&limit=96)](https://github.com/lissy93/dashy/network/members) --- @@ -1460,34 +44,6 @@ At it's core, the application uses [**Vue.js**](https://github.com/vuejs/vue), a - [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT` - [`vue-swatches`](https://github.com/saintplay/vue-swatches) - Color palete picker by @saintplay `MIT` -### Backup & Sync Server - -Although the app is purely frontend, there is an optional cloud sync feature, for off-site backup and restore. This is built as a serverless function on [Cloudflare workers](https://workers.cloudflare.com/) using [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) - -### External Services - -The 1-Click deploy demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker images are hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). - -### Actions - -This repo makes heavy use of [GitHub actions](https://github.com/features/actions) to run automated workflows. The following base actions are totally awesome, and have been extremely useful. Full credit to their respective authors - -- [`action-autotag`](https://github.com/butlerlogic/action-autotag) by @butlerlogic - Tags new versions when app version changes -- [`action-wiki-sync`](https://github.com/joeizzard/action-wiki-sync) by @joeizzard - Copies the markdown docs to the GH wiki -- [`contributors-list`](https://github.com/bubkoo/contributors-list) by @bubkoo - Generates contributors SVG -- [`contributors-readme-action`](https://github.com/akhilmhdh/contributors-readme-action) by @akhilmhdh - Inserts contributors into credits -- [`create-pull-request`](https://github.com/eter-evans/create-pull-request) by @eter-evans - Creates pull request -- [`github-pages-deploy-action`](https://github.com/JamesIves/github-pages-deploy-action) by @JamesIves - Deploy app to GH pages -- [`github-release-commenter`](https://github.com/apexskier/github-release-commenter) by @apexskier - Updates issues when fix is released -- [`github-sponsors-readme-action`](https://github.com/JamesIves/github-sponsors-readme-action) by @JamesIves - Inserts sponsors into credits -- [`is-sponsor-label-action`](https://github.com/JasonEtco/is-sponsor-label-action) by @JasonEtco - Label sponsors, for priority support -- [`issues-translate-action`](https://github.com/tomsun28/issues-translate-action) by @tomsun28 - Translates non-English issues and comments -- [`misspell-fixer-action`](https://github.com/sobolevn/misspell-fixer-action) by @sobolevn - Finds and fixes typos -- [`please-star-first`](https://github.com/uhyo/please-star-first) by @uhyo - Closes certain issues by non-stargazers -- [`pr-commenter-action`](https://github.com/exercism/pr-commenter-action) by @exercism - Adds info comments to PR based on the files changed -- [`snyk note`](https://github.com/snyk/actions/node) by @snyk - Reports vulnerabilities in the code or dependencies -- [`todo-to-issue-action`](https://github.com/alstr/todo-to-issue-action) by @alstr - Opens issues from todos in the code -- [`yarn-lock-changes`](https://github.com/Simek/yarn-lock-changes) by @Simek - Outputs dependency changes in PR --- diff --git a/docs/widgets.md b/docs/widgets.md index bd57458f..de637eb8 100644 --- a/docs/widgets.md +++ b/docs/widgets.md @@ -115,7 +115,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a A simple, live-updating time and date widget with time-zone support. All fields are optional. -

+

#### Options @@ -148,7 +148,7 @@ _No external data requests._ A simple, live-updating local weather component, showing temperature, conditions and more info. -

+

#### Options @@ -185,7 +185,7 @@ A simple, live-updating local weather component, showing temperature, conditions Displays the weather (temperature and conditions) for the next few days for a given location. Note that this requires either the free [OpenWeatherMap Student Plan](https://home.openweathermap.org/students), or the Premium Plan. -

+

#### Options @@ -221,7 +221,7 @@ Displays the weather (temperature and conditions) for the next few days for a gi Display news and updates from any RSS-enabled service. -

+

#### Options @@ -266,7 +266,7 @@ If you'd like to embed a live screenshot, of all or just part of a website, then Or what about showing a photo of the day? Try `https://source.unsplash.com/random/400x300` or `https://picsum.photos/400/300` -

+

#### Options @@ -294,7 +294,7 @@ Unless image fetched from remote source, no external data request is made. Often find yourself searching "What's my IP", just so you can check your VPN is still connected? This widget displays your public IP address, along with ISP name and approx location. Data can be fetched from either [IpApi.co](https://ipapi.co/), [IP-API.com](https://ip-api.com/), [IpGeolocation.io](https://ipgeolocation.io/) or [IP2Location.io](https://ip2location.io/). -

+

#### Options @@ -334,7 +334,7 @@ Or Notice certain web pages aren't loading? This widget quickly shows which blacklists your IP address (or host, or email) appears on, using data from [blacklistchecker.com](https://blacklistchecker.com/). -

+

#### Options @@ -366,7 +366,7 @@ Notice certain web pages aren't loading? This widget quickly shows which blackli Keep an eye on the expiry dates of your domain names, using public whois records fetched from [whoapi.com](https://whoapi.com/). Click the domain name to view additional info, like registrar, name servers and date last updated. -

+

#### Options @@ -404,7 +404,7 @@ Keep an eye on the expiry dates of your domain names, using public whois records Keep track of price changes of your favorite crypto assets. Data is fetched from [CoinGecko](https://www.coingecko.com/). All fields are optional. -

+

#### Options @@ -452,7 +452,7 @@ Or Shows recent price history for a given crypto asset, using price data fetched from [CoinGecko](https://www.coingecko.com/) -

+

#### Options @@ -487,7 +487,7 @@ Shows recent price history for a given crypto asset, using price data fetched fr Keep track of your crypto balances and see recent transactions. Data is fetched from [BlockCypher](https://www.blockcypher.com/dev/) -

+

#### Options @@ -520,7 +520,7 @@ Keep track of your crypto balances and see recent transactions. Data is fetched Display your coding summary. [Code::Stats](https://codestats.net/) is a free and open source app that aggregates statistics about your programming activity. Dashy supports both the public instance, as well as self-hosted versions. -

+

#### Options @@ -556,7 +556,7 @@ Display your coding summary. [Code::Stats](https://codestats.net/) is a free and Shows your Mullvad VPN connection status, as well as server info. Fetched from [am.i.mullvad.net](https://mullvad.net/en/check/) -

+

#### Options @@ -584,7 +584,7 @@ _No Options._ This widget display email addresses / aliases from addy.io. Click an email address to copy to clipboard, or use the toggle switch to enable/ disable it. Shows usage stats (bandwidth, used aliases etc), as well as total messages received, blocked and sent. Works with both self-hosted and managed instances of addy.io. -

+

#### Options @@ -627,7 +627,7 @@ This widget display email addresses / aliases from addy.io. Click an email addre Keep track of recent security advisories and vulnerabilities, with optional filtering by score, exploits, vendor and product. All fields are optional. -

+

#### Options @@ -672,7 +672,7 @@ or Display current FX rates in your native currency. Hover over a row to view more info, or click to show rates in that currency. -

+

#### Options @@ -712,7 +712,7 @@ Counting down to the next day off work? This widget displays upcoming public hol Note, config for this widget is case-sensitive (see [#1268](https://github.com/Lissy93/dashy/issues/1268)) -

+

#### Options @@ -750,7 +750,7 @@ Note, config for this widget is case-sensitive (see [#1268](https://github.com/L Keep track of the current COVID-19 status. Optionally also show cases by country, and a time-series chart. Uses live data from various sources, computed by [disease.sh](https://disease.sh/) -

+

#### Options @@ -797,7 +797,7 @@ Or Show recent scores and upcoming matches from your favorite sports team. Data is fetched from [TheSportsDB.com](https://www.thesportsdb.com/). From the UI, you can click any other team to view their scores and upcoming games, or click a league name to see all teams. -

+

#### Options @@ -832,7 +832,7 @@ Show recent scores and upcoming matches from your favorite sports team. Data is Displays the latest news, click to read full article. Date is fetched from various news sources using [Currents API](https://currentsapi.services/en) -

+

#### Options @@ -869,7 +869,7 @@ Displays the latest news, click to read full article. Date is fetched from vario Shows real-time tube status of the London Underground. All fields are optional. -

+

#### Options @@ -910,7 +910,7 @@ Shows real-time tube status of the London Underground. All fields are optional. Shows recent price history for a given publicly-traded stock or share -

+

#### Options @@ -945,7 +945,7 @@ Shows recent price history for a given publicly-traded stock or share Renders the current Gas cost of transactions on the Ethereum network (in both GWEI and USD), along with recent historical prices. Useful for spotting a good time to transact. Uses data from [ethgas.watch](https://ethgas.watch/) -

+

#### Options @@ -971,7 +971,7 @@ _No config options._ Renders a programming or generic joke. Data is fetched from the [JokesAPI](https://github.com/Sv443/JokeAPI) by @Sv443. All fields are optional. -

+

#### Options @@ -1005,7 +1005,7 @@ Renders a programming or generic joke. Data is fetched from the [JokesAPI](https Have a laugh with the daily comic from [XKCD](https://xkcd.com/). A classic webcomic website covering everything from Linux, math, romance, science and language. All fields are optional. -

+

#### Options @@ -1034,7 +1034,7 @@ Have a laugh with the daily comic from [XKCD](https://xkcd.com/). A classic webc Displays airport departure and arrival flights, using data from [AeroDataBox](https://www.aerodatabox.com/). Useful if you live near an airport and often wonder where the flight overhead is going to. Hover over a row for more flight data. -

+

#### Options @@ -1070,7 +1070,7 @@ Displays airport departure and arrival flights, using data from [AeroDataBox](ht Show the NASA Astronomy Picture of the Day. Data is fetched from [APOD](https://apod.nasa.gov/apod/) using [@Lissy93/go-apod](https://github.com/lissy93/go-apod) / hosted at [apod.as93.net](https://apod.as93.net/). -

+

#### Options @@ -1096,7 +1096,7 @@ _No config options._ Displays currently trending projects on GitHub. Optionally specify a language and time-frame. Data is fetched from [Lissy93/gh-trending-no-cors](https://github.com/Lissy93/gh-trending-no-cors) using the GitHub API. All fields are optional. -

+

#### Options @@ -1129,7 +1129,7 @@ Displays currently trending projects on GitHub. Optionally specify a language an Display stats from your GitHub profile, using embedded cards from [anuraghazra/github-readme-stats](https://github.com/anuraghazra/github-readme-stats) -

+

#### Options @@ -1167,7 +1167,7 @@ Display stats from your GitHub profile, using embedded cards from [anuraghazra/g Display status of one or more HealthChecks project(s). Works with healthchecks.io and your selfhosted instance. -

+

#### Options @@ -1504,7 +1504,7 @@ This widget allows searching multiple search engines from dashy. Show an overview of how you have spent your time for the current day. -

+

#### Options @@ -1578,7 +1578,7 @@ Show minecraft server status _See [MVG Datenschutz](https://www.mvg.de/datenschutz-mvg.html)_ Displays info about the server which Dashy is hosted on. Includes user + host, operating system, uptime and basic memory & load data. -

+

#### Options @@ -1602,7 +1602,7 @@ Note that this widget is not available if you are running Dashy in a container o Cron job monitoring using [Health Checks](https://github.com/healthchecks/healthchecks). Both managed and self-hosted instances are supported. -

+

#### Options @@ -1633,7 +1633,7 @@ Cron job monitoring using [Health Checks](https://github.com/healthchecks/health Pull recent CPU usage history from NetData. -

+

#### Options @@ -1697,7 +1697,7 @@ Pull recent system RAM usage from NetData, and show as a breakdown of different Pull recent load usage in 1, 5 and 15 minute intervals, from NetData. -

+

#### Options @@ -1729,7 +1729,7 @@ Pull recent load usage in 1, 5 and 15 minute intervals, from NetData. Displays the number of queries blocked by [Pi-Hole](https://pi-hole.net/). -

+

#### Options @@ -1821,7 +1821,7 @@ Displays the number of queries blocked by [Pi-Hole](https://pi-hole.net/). Use t Shows top queries that were blocked and allowed by [Pi-Hole](https://pi-hole.net/). -

+

#### Options @@ -1887,7 +1887,7 @@ Shows top queries that were blocked and allowed by [Pi-Hole](https://pi-hole.net Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole](https://pi-hole.net/) -

+

#### Options @@ -1951,7 +1951,7 @@ Shows number of recent traffic, using allowed and blocked queries from [Pi-Hole] Displays the current and recent uptime of your running services, via a self-hosted instance of [StatPing](https://github.com/statping/statping) -

+

#### Options @@ -1999,7 +1999,7 @@ Note, the Group Id is not directly visible in StatPing UI, you can inspect the g Displays the current downloads/torrents tasks of your Synology NAS -

+

#### Options @@ -2036,7 +2036,7 @@ Displays the current downloads/torrents tasks of your Synology NAS Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) instance, and displays total number of allowed and blocked queries, plus a pie chart showing breakdown by block type. -

+

#### Options @@ -2071,7 +2071,7 @@ displays total number of allowed and blocked queries, plus a pie chart showing b Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) instance, to display the current status of each of your filter lists. Includes filter name, last updated, number of items, and a link to the list. -

+

#### Options @@ -2108,7 +2108,7 @@ Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overvi Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) instance, and displays the current status (Enabled / Disabled) of AdGuard DNS. Click show more to view detailed info, including upstream DNS provider, active ports, and the status of DNSSEC, EDNS CS, PTR and IPv6. -

+

#### Options @@ -2145,7 +2145,7 @@ Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overvi Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) instance, and displays a list of the most queried, and most blocked domains. -

+

#### Options @@ -2190,7 +2190,7 @@ Shows quota usage when quota is enabled for the user or disk usage when not enab Known issues: the User API incorrectly reports available disk space as total for admin users when quota is not enabled (which usually is the case for admins). -

nextcloud-user

+

nextcloud-user

#### Options @@ -2225,7 +2225,7 @@ Known issues: the User API incorrectly reports available disk space as total for Show user statuses for selected users. -

nextcloud-userstatus

+

nextcloud-userstatus

#### Options @@ -2263,7 +2263,7 @@ Show user statuses for selected users. Displays your notifications and allows deleting them. -

nextcloud-notifications

+

nextcloud-notifications

#### Options @@ -2300,7 +2300,7 @@ Displays your notifications and allows deleting them. Visualises overall memory utilisation and CPU load averages, shows server versions. -

nextcloud-system

+

nextcloud-system

#### Options @@ -2335,7 +2335,7 @@ Visualises overall memory utilisation and CPU load averages, shows server versio Shows key usage statistics about your Nextcloud server. -

nextcloud-stats

+

nextcloud-stats

#### Options @@ -2370,7 +2370,7 @@ Shows key usage statistics about your Nextcloud server. Shows statistics about PHP OPcache performance on your Nextcloud server. -

nextcloud-phpopcache

+

nextcloud-phpopcache

#### Options @@ -2472,7 +2472,7 @@ This will show the list of VMs, with a title and a linked fotter, hiding VM temp Shows queue information regarding your self hosted Sabnzbd server. -

Sabnzbd

+

Sabnzbd

#### Options @@ -2508,7 +2508,7 @@ Shows queue information regarding your self hosted Sabnzbd server. Display info from the Gluetun VPN container public IP API. This can show the IP and location data for the exit VPN node. -

+

#### Options @@ -2541,7 +2541,7 @@ Display info from the Gluetun VPN container public IP API. This can show the IP Display the last builds from a [Drone CI](https://www.drone.ci) instance. A self-hosted CI system that uses docker. -

+

#### Options @@ -2643,7 +2643,7 @@ Linkding is a self-hosted bookmarking service, which has a clean interface and i [Tactical RMM](https://github.com/amidaware/tacticalrmm) is a self-hosted remote monitoring & management tool. -

Capture

+

Capture

#### Options @@ -2729,7 +2729,7 @@ Note that if auth is configured, requests must be proxied with `useProxy: true` #### Screenshot -[![example-screenshot](https://i.ibb.co/xfK6BGb/system-monitor-board.png)](https://ibb.co/pR6dMZT) +[![example-screenshot](https://storage.googleapis.com/as93-screenshots/dashy/monitor-board.png)](https://ibb.co/pR6dMZT) --- @@ -2737,7 +2737,7 @@ Note that if auth is configured, requests must be proxied with `useProxy: true` Live-updating current CPU usage, as a combined average across all cores -

+

#### Example @@ -2753,7 +2753,7 @@ Live-updating current CPU usage, as a combined average across all cores Speedometer styled version of the Current CPU Usage widget -

+

#### Example @@ -2769,7 +2769,7 @@ Speedometer styled version of the Current CPU Usage widget Live-updating CPU usage breakdown per core -

+

#### Example @@ -2785,7 +2785,7 @@ Live-updating CPU usage breakdown per core Recent CPU usage history, across all cores, and displayed by user and system -

+

#### Options @@ -2808,7 +2808,7 @@ Recent CPU usage history, across all cores, and displayed by user and system Real-time memory usage gauge, with more info visible on click -

+

#### Example @@ -2824,7 +2824,7 @@ Real-time memory usage gauge, with more info visible on click Speedometer styled version of the Current Memory Usage widget -

+

#### Example @@ -2840,7 +2840,7 @@ Speedometer styled version of the Current Memory Usage widget Recent memory usage chart -

+

#### Options @@ -2863,7 +2863,7 @@ Recent memory usage chart List connected disks, showing free / used space and other info (file system, mount point and space available) -

+

#### Example @@ -2879,7 +2879,7 @@ List connected disks, showing free / used space and other info (file system, mou Shows real-time read and write speeds and operations per sec for each disk -

+

#### Example @@ -2895,7 +2895,7 @@ Shows real-time read and write speeds and operations per sec for each disk Shows the number of processes waiting in the run-queue, averaged across all cores. Displays for past 5, 10 and 15 minutes -

+

#### Example @@ -2911,7 +2911,7 @@ Shows the number of processes waiting in the run-queue, averaged across all core Shows recent historical system load, calculated from the number of processes waiting in the run-queue, in 1, 5 and 15 minute intervals, and averaged across all cores. Optionally specify `limit` to set number of results returned, defaults to `500`, max `100000`, but the higher the number the longer the load and render times will be. -

+

#### Example @@ -2927,7 +2927,7 @@ Shows recent historical system load, calculated from the number of processes wai Lists visible network interfaces, including real-time upload/ download stats -

+

#### Example @@ -2943,7 +2943,7 @@ Lists visible network interfaces, including real-time upload/ download stats Shows amount of data recently uploaded/ downloaded across all network interfaces. Optionally set the `limit` option to specify number historical of data points to return -

+

#### Example @@ -2976,7 +2976,7 @@ Lists recent high resource usage alerts (e.g. CPU, mem, IO, load, temp) Shows public and private IP address. Note that the ip plugin is not available on all instances of Glances. -

+

#### Example @@ -2995,7 +2995,7 @@ Displays temperature data from system CPUs. Note: This widget uses the [`sensors`](https://github.com/nicolargo/glances/blob/develop/glances/plugins/glances_sensors.py) plugin, which is disabled by default, and may cause [performance issues](https://github.com/nicolargo/glances/issues/1664#issuecomment-632063558). You'll need to enable the sensors plugin to use this widget, using: `--enable-plugin sensors` when you start Glances. -

+

#### Options @@ -3020,7 +3020,7 @@ You'll need to enable the sensors plugin to use this widget, using: `--enable-pl Embed any webpage into your dashboard as a widget. -

+

#### Options @@ -3045,7 +3045,7 @@ Many websites and apps provide their own embeddable widgets. These can be used w ⚠️ **NOTE:** Use with extreme caution. Embedding a script from an untrustworthy source may have serious unintended consequences. -

+

#### Options @@ -3112,7 +3112,7 @@ Display data from any service with a Prometheus exporter. Show live data from an RSS-enabled service. The only required parameter is `rssUrl`, which is the URL to the ATOM feed. See [RSS Widget](#rss-feed) for full list of available options. -

+

#### Example diff --git a/src/assets/locales/da.json b/src/assets/locales/da.json index 66893155..426ebf63 100644 --- a/src/assets/locales/da.json +++ b/src/assets/locales/da.json @@ -2,7 +2,7 @@ "home": { "no-results": "Ingen søgeresultater", "no-data": "Ingen data konfigureret", - "no-items-section": "Ingen genstander at vise endnu" + "no-items-section": "Ingen genstande at vise endnu" }, "search": { "search-label": "Søg", @@ -20,7 +20,7 @@ "remember-me-hour": "4 timer", "remember-me-day": "1 dag", "remember-me-week": "1 uge", - "remember-me-long-time": "en lang tid", + "remember-me-long-time": "lang tid", "error-missing-username": "Mangler brugernavn", "error-missing-password": "Manglende adgangskode", "error-incorrect-username": "Bruger ikke fundet", @@ -54,7 +54,7 @@ "reset-config-msg-l3": "Er du sikker på at du vil fortsætte?", "data-cleared-msg": "Data blev succesfuldt ryddet", "actions-label": "Handlinger", - "copy-config-label": "Kopiera Config", + "copy-config-label": "Kopiere Config", "data-copied-msg": "Konfigurationen er blevet kopieret til clipboard", "reset-config-label": "Nulstil konfiguration", "css-save-btn": "Gem ændringer", @@ -95,7 +95,7 @@ "language-switcher": { "title": "Skift applikationssprog", "dropdown-label": "Valg en sprog", - "save-button": "Gemme", + "save-button": "Gem", "success-msg": "Sprog opdateret til" }, "theme-maker": { @@ -104,17 +104,17 @@ "reset-button": "Nulstil styles for", "show-all-button": "Vis alle variabler", "change-fonts-button": "Skift skrifttyper", - "save-button": "Gemme", - "cancel-button": "Ophæve", - "saved-toast": "{theme} opdateret med succes", + "save-button": "Gem", + "cancel-button": "Annuller", + "saved-toast": "{theme} opdateret succesfuldt", "copied-toast": "Temadata for {theme} kopieret til udklipsholder", "reset-toast": "Tilpassede farver for {theme} fjernet" }, "config-editor": { - "save-location-label": "Gemme beliggenhed", - "location-local-label": "Anbringe lokalt", + "save-location-label": "Lokation for gem", + "location-local-label": "Gem lokalt", "location-disk-label": "Skriv ændringer til konfigurationsfil", - "save-button": "Gemme ændringer", + "save-button": "Gem ændringer", "preview-button": "Forhåndsvisning af ændringer", "valid-label": "Konfigurationen er gyldig", "status-success-msg": "Opgave fuldført", @@ -155,7 +155,7 @@ "password-label-update": "Skriv dit kodeord", "backup-button-setup": "Sikkerhedskopiering", "backup-button-update": "Opdater sikkerhedskopiering", - "backup-id-label": "Din sikkerhedskopi-ID", + "backup-id-label": "Dit sikkerhedskopi-ID", "backup-id-note": "Dette bruges til at gendanne fra sikkerhedskopier senere. Så gem det sammen med din adgangskode et sikkert sted.", "restore-title": "Gendan en sikkerhedskopi", "restore-id-label": "Gendan-ID", @@ -165,7 +165,7 @@ "backup-error-unknown": "Kan ikke behandle anmodningen", "backup-error-password": "Forkert kodeord. Indtast venligst din nuværende adgangskode.", "backup-success-msg": "Afsluttet med succes", - "restore-success-msg": "Konfiguration gendan med succes" + "restore-success-msg": "Konfiguration gendannet med succes" }, "menu": { "open-section-title": "Åbn i", @@ -174,9 +174,9 @@ "modal": "Pop-Up Modal", "workspace": "Arbejdsrumsvisning", "options-section-title": "Muligheder", - "edit-item": "Redigere", + "edit-item": "Rediger", "move-item": "Kopier eller flyt", - "remove-item": "Fjerne" + "remove-item": "Fjern" }, "context-menus": { "item": { @@ -187,14 +187,14 @@ "workspace": "Arbejdsrumsvisning", "clipboard": "Kopier til udklipsholder", "options-section-title": "Muligheder", - "edit-item": "Redigere", + "edit-item": "Rediger", "move-item": "Kopier eller flyt", "remove-item": "Fjerne", "copied-toast": "URL er blevet kopieret til udklipsholder" }, "section": { "open-section": "Åbn sektion", - "edit-section": "Redigere", + "edit-section": "Rediger", "expand-collapse": "Udvid / Skjul", "move-section": "Flytte til", "remove-section": "Fjerne" @@ -206,35 +206,35 @@ "edit-site-data-subheading": "Rediger webstedsdata", "edit-page-info-btn": "Rediger sideoplysninger", "edit-page-info-tooltip": "Apptitel, beskrivelse, navigationslinks, sidefodstekst osv.", - "edit-app-config-btn": "Redigere appkonfiguration", + "edit-app-config-btn": "Rediger appkonfiguration", "edit-app-config-tooltip": "Alle andre appkonfigurationsmuligheder", - "edit-pages-btn": "Redigere sider", + "edit-pages-btn": "Rediger sider", "edit-pages-tooltip": "Tilføj eller fjern yderligere visninger", "config-save-methods-subheading": "Indstillinger for lagring af konfiguration", - "save-locally-btn": "Gemme lokalt", + "save-locally-btn": "Gem lokalt", "save-locally-tooltip": "Gem konfigurationen lokalt i browserlageret. Dette vil ikke påvirke din konfigurationsfil, men ændringer vil kun blive gemt på denne enhed", - "save-disk-btn": "Gemme til disk", + "save-disk-btn": "Gem til disk", "save-disk-tooltip": "Gem konfigurationen i filen conf.yml på disken. Dette vil sikkerhedskopiere og derefter overskrive din eksisterende konfiguration", - "export-config-btn": "Exportere konfiguration", + "export-config-btn": "Exporter konfiguration", "export-config-tooltip": "Se og eksporter ny konfiguration, enten til en fil eller til udklipsholder", "cloud-backup-btn": "Sikkerhedskopier til cloud", "cloud-backup-tooltip": "Gem krypteret backup af konfiguration til cloud", "edit-raw-config-btn": "Rediger rå konfiguration", "edit-raw-config-tooltip": "Se og rediger rå config via JSON-editor", - "cancel-changes-btn": "Avbryd redigering", + "cancel-changes-btn": "Afbryd redigering", "cancel-changes-tooltip": "Nulstil aktuelle ændringer, og afslut redigeringstilstand. Dette vil ikke påvirke din gemte konfiguration", "edit-mode-name": "Redigeringstilstand", "edit-mode-subtitle": "Du er i redigeringstilstand", "edit-mode-description": "Det betyder, at du kan foretage ændringer i din konfiguration og se resultaterne, men indtil du gemmer, vil ingen af dine ændringer blive bevaret.", - "save-stage-btn": "Gemme", - "cancel-stage-btn": "Avbryd", + "save-stage-btn": "Gem", + "cancel-stage-btn": "Afbryd", "save-locally-warning": "Hvis du fortsætter, vil ændringer kun blive gemt i din browser. Du bør eksportere en kopi af din konfiguration til brug på andre maskiner. Vil du fortsætte?" }, "edit-item": { "missing-title-err": "En varetitel er påkrævet" }, "edit-section": { - "edit-section-title": "Redigere sektion", + "edit-section-title": "Rediger sektion", "add-section-title": "Tilføj ny sektion", "edit-tooltip": "Klik for at redigere, eller højreklik for at få flere muligheder", "remove-confirm": "Er du sikker på, at du vil fjerne denne sektion? Denne handling kan fortrydes senere." @@ -273,11 +273,11 @@ "cpu-chart-title": "CPU-historie", "mem-chart-title": "Hukommelsesbrug", "mem-breakdown-title": "Hukommelsesnedbrydning", - "load-chart-title": "Systeminlæsning" + "load-chart-title": "Systemindlæsning" }, "glances": { "disk-space-free": "Ledig", - "disk-space-used": "I bruk", + "disk-space-used": "I brug", "disk-mount-point": "Mount Point", "disk-file-system": "Filsystem", "disk-io-read": "Læs", @@ -329,7 +329,7 @@ "disk-space": "Diskudrymme", "dnd": "Forstyr ikke", "email": "email", - "enabled": "aktivert", + "enabled": "aktiveret", "federated-shares-ucfirst": "Fødereret deler", "federated-shares": "fødereret deler", "files": "fil{plural}", @@ -363,7 +363,7 @@ "other": "andet", "overall": "Samlet set", "private-link": "privat link", - "public-link": "publik link", + "public-link": "offentlig link", "quota-enabled": "Diskkvote er {not} aktiveret for denne bruger", "received": "modtaget", "scripts": "scripts", @@ -371,7 +371,7 @@ "started": "Startede", "storages-by-type": "Opbevaring efter type", "storages": "Opbevaring{plural}", - "strings-use": "strings brug", + "strings-use": "tråde brug", "tasks": "Opgaver", "total-files": "samlede filer", "total-users": "samlede bruger", @@ -379,7 +379,7 @@ "until": "Så længe", "updates-available-for": "Opdateringer er tilgængelige for", "updates-available": "opdatering{plural} tilgængelig", - "used": "brugd", + "used": "brugt", "user": "bruger", "using": "ved brug af", "version": "version", diff --git a/src/utils/Auth.js b/src/utils/Auth.js index 076b99d1..dd2ea5eb 100644 --- a/src/utils/Auth.js +++ b/src/utils/Auth.js @@ -31,7 +31,19 @@ const getUsers = () => { return []; // Support for old data structure now removed } // Otherwise, return the users array, if available - return auth.users || []; + + const users = auth.users || []; + if (isOidcEnabled()) { + if (localStorage[localStorageKeys.USERNAME]) { + const user = { + user: localStorage[localStorageKeys.USERNAME], + type: localStorage[localStorageKeys.ISADMIN] === 'true' ? 'admin' : 'normal', + }; + users.push(user); + } + } + + return users; }; /** @@ -80,6 +92,17 @@ export const makeBasicAuthHeaders = () => { export const isLoggedIn = () => { const users = getUsers(); const cookieToken = getCookieToken(); + + if (isOidcEnabled()) { + const username = localStorage[localStorageKeys.USERNAME]; // Get username + if (!username) return false; // No username + return users.some((user) => { + if (user.user === username || generateUserToken(user) === cookieToken) { + return true; + } else return false; + }); + } + return users.some((user) => { if (generateUserToken(user) === cookieToken) { localStorage.setItem(localStorageKeys.USERNAME, user.user); diff --git a/src/utils/ConfigSchema.json b/src/utils/ConfigSchema.json index 87a11840..92039798 100644 --- a/src/utils/ConfigSchema.json +++ b/src/utils/ConfigSchema.json @@ -566,6 +566,18 @@ "type": "string", "description": "ClientId from OIDC provider" }, + "adminRole" : { + "title": "Admin Role", + "type": "string", + "default": false, + "description": "The role that will be considered as admin. If not set, no roles will be considered as admin" + }, + "adminGroup" : { + "title": "Admin Group", + "type": "string", + "default": false, + "description": "The group that will be considered as admin. If not set, no groups will be considered as admin" + }, "scope" : { "title": "OIDC Scope", "type": "string", diff --git a/src/utils/OidcAuth.js b/src/utils/OidcAuth.js index 5d438404..675d83c1 100644 --- a/src/utils/OidcAuth.js +++ b/src/utils/OidcAuth.js @@ -13,7 +13,13 @@ const getAppConfig = () => { class OidcAuth { constructor() { const { auth } = getAppConfig(); - const { clientId, endpoint, scope } = auth.oidc; + const { + clientId, + endpoint, + scope, + adminGroup, + adminRole, + } = auth.oidc; const settings = { userStore: new WebStorageStateStore({ store: window.localStorage }), authority: endpoint, @@ -25,6 +31,8 @@ class OidcAuth { filterProtocolClaims: true, }; + this.adminGroup = adminGroup; + this.adminRole = adminRole; this.userManager = new UserManager(settings); } @@ -43,22 +51,27 @@ class OidcAuth { if (user === null) { await this.userManager.signinRedirect(); } else { - const { roles, groups } = user.profile; + const { roles = [], groups = [] } = user.profile; const info = { groups, roles, }; + const isAdmin = (Array.isArray(groups) && groups.includes(this.adminGroup)) + || (Array.isArray(roles) && roles.includes(this.adminRole)) + || false; - statusMsg(`user: ${user.profile.preferred_username}`, JSON.stringify(info)); + statusMsg(`user: ${user.profile.preferred_username} admin: ${isAdmin}`, JSON.stringify(info)); localStorage.setItem(localStorageKeys.KEYCLOAK_INFO, JSON.stringify(info)); localStorage.setItem(localStorageKeys.USERNAME, user.profile.preferred_username); + localStorage.setItem(localStorageKeys.ISADMIN, isAdmin); } } async logout() { localStorage.removeItem(localStorageKeys.USERNAME); localStorage.removeItem(localStorageKeys.KEYCLOAK_INFO); + localStorage.removeItem(localStorageKeys.ISADMIN); try { await this.userManager.signoutRedirect(); diff --git a/src/utils/defaults.js b/src/utils/defaults.js index 2b690c0b..847dbe6f 100644 --- a/src/utils/defaults.js +++ b/src/utils/defaults.js @@ -137,6 +137,7 @@ module.exports = { MOST_USED: 'mostUsed', LAST_USED: 'lastUsed', KEYCLOAK_INFO: 'keycloakInfo', + ISADMIN: 'isAdmin', DISABLE_CRITICAL_WARNING: 'disableCriticalWarning', }, /* Key names for cookie identifiers */ @@ -336,6 +337,18 @@ module.exports = { /^manifest.*\.js$/, // default value /\.nojekyll$/, /\.gitignore$/, + /conf\.yml$/, // ignore config for runtimeCaching + ], + // https://developer.chrome.com/docs/workbox/modules/workbox-build#type-RuntimeCaching + runtimeCaching: [ + { + urlPattern: /conf\.yml$/, + handler: 'NetworkFirst', + options: { + cacheName: 'config-cache', + networkTimeoutSeconds: 3, + }, + }, ], }, },