WIP: introduce functionality to assign/create team via group claim #1279

Closed
viehlieb wants to merge 18 commits from viehlieb/api:950_assign_teams_via_oidc into main
Contributor

This is a draft PR to adress vikunja/api#950

Works like following:

  • Add Users to Group via oidc privider e.g. authentik
  • On vikunja oidc login:
    • Group will be searched for in vikunja "by name"
      • if two groups with same name appear, log error.msg and do nothing
      • if group does not exist, team will be created with user as member (no admin)
      • if group does exist, user will be added as member

Feature needs specification:

  • Management of admin rights of user for groups via oidc
  • Manage groups that should be created/deleted on oidc provider (via custom claim/scope in oauth_token)
    • change: scope has to be hard coded in vikunja/frontend atm

There are several things that have to be done to complete this PR:

1.) add tests to openid_test.go
2.) manage admin rights via oidc

This is a draft PR to adress https://kolaente.dev/vikunja/api/issues/950 Works like following: - Add Users to Group via oidc privider e.g. authentik - On vikunja oidc login: - Group will be searched for in vikunja "by name" - if two groups with same name appear, log error.msg and do nothing - if group does not exist, team will be created with user as member (no admin) - if group does exist, user will be added as member Feature needs specification: * Management of admin rights of user for groups via oidc * Manage groups that should be created/deleted on oidc provider (via custom claim/scope in oauth_token) * change: scope has to be hard coded in vikunja/frontend atm There are several things that have to be done to complete this PR: 1.) add tests to openid_test.go 2.) manage admin rights via oidc
viehlieb added 1 commit 2022-10-12 13:19:55 +00:00
introduce functionality to assign/create team via group claim
Some checks failed
continuous-integration/drone/pr Build is failing
e4f60df777
Owner

How can we test this?

How can we test this?
konrad requested changes 2022-10-12 13:33:10 +00:00
@ -1095,6 +1095,28 @@ func (err ErrTeamDoesNotExist) HTTPError() web.HTTPError {
return web.HTTPError{HTTPCode: http.StatusNotFound, Code: ErrCodeTeamDoesNotExist, Message: "This team does not exist."}
}
type ErrTeamsDoNotExist struct {
Owner

Can you add this to the error docs?

Can you add this to the error docs?
@ -282,6 +310,37 @@ func (t *Team) Create(s *xorm.Session, a web.Auth) (err error) {
})
}
func (t *Team) CreateNoAdmin(s *xorm.Session, a web.Auth) (err error) {
Owner

Why don't you use the existing Create function for Teams? Only because of the Admin property? Why do you want to create teams without an admin in the first place?

In any case, this function almost entierly duplicates with the existing one - please refactor it so that only one is used.

Why don't you use the existing `Create` function for Teams? Only because of the `Admin` property? Why do you want to create teams without an admin in the first place? In any case, this function almost entierly duplicates with the existing one - please refactor it so that only one is used.
Author
Contributor

For now we can also be simplistic and just search for groups, if not exists: create group with user as admin member.

For now we can also be simplistic and just search for groups, if not exists: create group with user as admin member.
@ -65,0 +63,4 @@
Name string `json:"name"`
PreferredUsername string `json:"preferred_username"`
Nickname string `json:"nickname"`
Group []string `json:"groups"`
Owner

Why not call it teams?

Why not call it `teams`?
Author
Contributor

true

true
@ -189,2 +191,4 @@
// Check if we have seen this user before
u, err := getOrCreateUser(s, cl, idToken.Issuer, idToken.Subject)
log.Errorf("Issuer %s: %v", idToken.Issuer, err)
Owner

This should be Debugf.

This should be `Debugf`.
@ -195,2 +200,4 @@
}
// Check if we have seen this user before
teams, err := GetOrCreateTeamsByNames(s, cl.Group, u)
Owner

I don't like the idea of matching the team by names. What happens if there are multiple teams of the same name?

I think it's better to use IDs of an existing team. That would also avoid creating new Teams and the rights issues associated with that.

I don't like the idea of matching the team by names. What happens if there are multiple teams of the same name? I think it's better to use IDs of an existing team. That would also avoid creating new Teams and the rights issues associated with that.
Author
Contributor

The interface of the oidc provider lets you create groups, which are delivered to vikunja via oauth_token "groups".
It has no notion of the vikunja teams' ids.

As the scopes are implemented now, you could also include a custom claim (which atm are somewhat hard coded in vikunja/frontend) and send ids and search for teams, but then the oidc admin would have to search for team ids in the respective application.
But that's a possible change I could implemented.

My proposal via names includes:
if two teams were found with the same name, then nothing is gonna happen and problems have to be resolved manually by admin (namely: rename teams).

The interface of the oidc provider lets you create groups, which are delivered to vikunja via oauth_token "groups". It has no notion of the vikunja teams' ids. As the scopes are implemented now, you could also include a custom claim (which atm are somewhat hard coded in vikunja/frontend) and send ids and search for teams, but then the oidc admin would have to search for team ids in the respective application. But that's a possible change I could implemented. My proposal via names includes: if two teams were found with the same name, then nothing is gonna happen and problems have to be resolved manually by admin (namely: rename teams).
Author
Contributor

The interface of the oidc provider lets you create groups, which are delivered to vikunja via oauth_token "groups".
It has no notion of the vikunja teams' ids.

As the scopes are implemented now, you could also include a custom claim (which atm are somewhat hard coded in vikunja/frontend) and send ids and search for teams, but then the oidc admin would have to search for team ids in the respective application.
But that's a possible change I could implemented.

My proposal via names includes:
if two teams were found with the same name, then nothing is gonna happen and problems have to be resolved manually by admin (namely: rename teams).

The interface of the oidc provider lets you create groups, which are delivered to vikunja via oauth_token "groups". It has no notion of the vikunja teams' ids. As the scopes are implemented now, you could also include a custom claim (which atm are somewhat hard coded in vikunja/frontend) and send ids and search for teams, but then the oidc admin would have to search for team ids in the respective application. But that's a possible change I could implemented. My proposal via names includes: if two teams were found with the same name, then nothing is gonna happen and problems have to be resolved manually by admin (namely: rename teams).
Owner

But what about adding a user to a group called "1" for a team of id one? Is this something the provider has implemented on its own or is part of the spec? If there's a spec for it we should use that.

Which provider are you using?

But what about adding a user to a group called "1" for a team of id one? Is this something the provider has implemented on its own or is part of the spec? If there's a spec for it we should use that. Which provider are you using?
Author
Contributor

The provider would be authentik.

The provider would be authentik.
@ -197,0 +208,4 @@
for _, team := range teams {
tm := models.TeamMember{TeamID: team.ID, Username: u.Username}
if err = tm.Create(s, u); err != nil {
switch t := err.(type) {
Owner

Why the switch case with only one case?

Why the switch case with only one case?
Owner

Manage groups that should be created/deleted on oidc provider (via custom claim/scope in oauth_token)

You mean groups that could be managed from the oidc provider?

> Manage groups that should be created/deleted on oidc provider (via custom claim/scope in oauth_token) You mean groups that could be managed from the oidc provider?
Author
Contributor

Our specific use case would make it mandatory to manage groups via oidc provider.

The first user, that logs in and creates the team might not neccessarily be admin of this respective group.

It is possible to send more information via "scopes" included in the oauth_token.

That is the background of this change.

Our specific use case would make it mandatory to manage groups via oidc provider. The first user, that logs in and creates the team might not neccessarily be admin of this respective group. It is possible to send more information via "scopes" included in the oauth_token. That is the background of this change.
Owner

It is possible to send more information via "scopes" included in the oauth_token.

Like who should be admin of that team?

> It is possible to send more information via "scopes" included in the oauth_token. Like who should be admin of that team?
viehlieb added 1 commit 2022-12-23 11:22:57 +00:00
wip assign groups via oidc
Some checks failed
continuous-integration/drone/pr Build is failing
4673aa5526
viehlieb added 9 commits 2023-01-27 12:50:18 +00:00
viehlieb added 2 commits 2023-01-27 16:16:01 +00:00
viehlieb added 1 commit 2023-01-30 14:06:24 +00:00
remove development notes
Some checks are pending
continuous-integration/drone/pr Build is pending
7386759080
viehlieb added 4599 commits 2023-01-30 14:07:32 +00:00
Complete migration flow

Add migration in progress animation

Add handling wunderlist migration flow

Basic migration init structure

Add migrator structure

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#46
Make "migration" "import everywhere"

Add checking for migration status before trying to migrate

Add get status from migrations

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#47
Add removing of tasks

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#48
Show if a related task is done

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#49
Fix saving

Use mixin everywhere

Format attachment dates

Add format date mixing

Use moment js on task list page

Use moment js on home page tasks

Add moment js

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#50
Use message mixin everywhere

Add mixin for success and error messages

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#51
Add hiding the search

Add actually searching for tasks

Fix jumping search button on page load

Add search button

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#52
Fix error msg data props everywhere

Fix error msg data props

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#53
Use a contenteditable for task title to make it look good on mobile

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#54
Only focus inputs if the viewport is large enough

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#55
Add a link to vikunja.io

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#56
Add actions for reminders

Remove scheduled reminders

Better styling

Start adding support for triggered offline notifications

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#57
(Caused bugs)
Fix email field type

Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
Reviewed-on: vikunja/frontend#58
Reviewed-by: konrad <konrad@kola-entertainments.de>
Fix a typo

Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
Reviewed-on: vikunja/frontend#64
Better edit/remove buttons

Spacing

More loading

Add loading

Better dates formatting

Add editing comments

Move closing delete modal to finally

Add delete comments

Add keycode modifier

Comment styling

Comment form

Add basic task comments functionality

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#66
Add getting the user avatar from the api

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#68
This reverts commit 3c3767a9
Fix input validation for new tasks

Better layout for input validation for new lists

Add input length validation for new namepaces

Add input length validation for new lists

Add input length validation for new tasks

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#70
Fixes #71
Use fancy checkbox for archiving namespace

Show is archived badge for namespaces

Fix is archived badge in navigation bar

Add check to filter out archived lists or namespaces

Show if a list is archived in menu

Hide edit task if the list is archived

Hide marking tasks as done if the list is archived

Show is archived message on list

Add archiving a list

Add archiving a namespace

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#73
Show colors for namespaces bigger

Show colors for lists and namespaces

Add changing color for lists

Add changing color for namespace

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#74
Save sort order to local storage

Save selected columns to localStorage

Loading spinner

More sorting

Add sorting

Styling and hiding of column filter

Add checkbox to show/hide columns

Use fancycheckbox everywhere

Fix is done badge

Change sort order in table view

Add is done column to table

Better text handling

Refactor is done into seperate component

Add pagination to table view

Add assignees to table view

Fix redirecting to table view

Add date tooltip to date field

Add date tooltip to date field

labels for table view

Styling

Add basic table view

Extend priority label

Split list view in mixins

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#76
Fix moving tasks in Gantt

Start fixing gantt

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#79
Add renovate.json

Reviewed-on: vikunja/frontend#80
Pin dependencies

Reviewed-on: vikunja/frontend#81
Update Font Awesome

Reviewed-on: vikunja/frontend#82
Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88
Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89
Update dependency axios to v0.19.2

Add github token for renovate (#89)

Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Update Font Awesome (#82)

Update Font Awesome

Reviewed-on: vikunja/frontend#82

Co-authored-by: konrad <konrad@kola-entertainments.de>
Reviewed-on: vikunja/frontend#83
Update dependency babel-eslint to v10.1.0

Update dependency axios to v0.19.2 (#83)

Update dependency axios to v0.19.2

Add github token for renovate (#89)

Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Update Font Awesome (#82)

Update Font Awesome

Reviewed-on: vikunja/frontend#82

Co-authored-by: konrad <konrad@kola-entertainments.de>
Reviewed-on: vikunja/frontend#83

Add github token for renovate (#89)

Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Co-authored-by: konrad <konrad@kola-entertainments.de>
Reviewed-on: vikunja/frontend#84
Update dependency bulma to v0.8.1

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Reviewed-on: vikunja/frontend#85
Update dependency eslint to v6.8.0

Update dependency bulma to v0.8.1 (#85)

Update dependency bulma to v0.8.1

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Reviewed-on: vikunja/frontend#85

Update dependency babel-eslint to v10.1.0 (#84)

Update dependency babel-eslint to v10.1.0

Update dependency axios to v0.19.2 (#83)

Update dependency axios to v0.19.2

Add github token for renovate (#89)

Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Update Font Awesome (#82)

Update Font Awesome

Reviewed-on: vikunja/frontend#82

Co-authored-by: konrad <konrad@kola-entertainments.de>
Reviewed-on: vikunja/frontend#83

Add github token for renovate (#89)

Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Co-authored-by: konrad <konrad@kola-entertainments.de>
Reviewed-on: vikunja/frontend#84

Update dependency axios to v0.19.2 (#83)

Update dependency axios to v0.19.2

Add github token for renovate (#89)

Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Update Font Awesome (#82)

Update Font Awesome

Reviewed-on: vikunja/frontend#82

Co-authored-by: konrad <konrad@kola-entertainments.de>
Reviewed-on: vikunja/frontend#83

Reviewed-on: vikunja/frontend#90
Update dependency v-tooltip to v2.0.3

Update dependency bulma to v0.8.1 (#85)

Update dependency bulma to v0.8.1

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Reviewed-on: vikunja/frontend#85

Update dependency babel-eslint to v10.1.0 (#84)

Update dependency babel-eslint to v10.1.0

Update dependency axios to v0.19.2 (#83)

Update dependency axios to v0.19.2

Add github token for renovate (#89)

Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Update Font Awesome (#82)

Update Font Awesome

Reviewed-on: vikunja/frontend#82

Co-authored-by: konrad <konrad@kola-entertainments.de>
Reviewed-on: vikunja/frontend#83

Add github token for renovate (#89)

Add github token for renovate

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#89

Update dependency date-fns to v2.11.1 (#88)

Update dependency date-fns to v2.11.1

Reviewed-on: vikunja/frontend#88

Co-authored-by: konrad <konrad@kola-entertainments.de>
Reviewed-on: vikunja/frontend#84

Reviewed-on: vikunja/frontend#95
Update dependency vue-router to v3.1.6

Reviewed-on: vikunja/frontend#96
Update dependency node-sass to v4.13.1

Reviewed-on: vikunja/frontend#92
Update vue-cli monorepo to v4.3.0

Reviewed-on: vikunja/frontend#97
Update dependency eslint-plugin-vue to v6.2.2

Reviewed-on: vikunja/frontend#91
Update dependency sass-loader to v8.0.2

Reviewed-on: vikunja/frontend#94
Add telegram release notificiation

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#98
Update dependency register-service-worker to v1.7.1

Reviewed-on: vikunja/frontend#93
Update vue-cli monorepo to v4.3.1

Reviewed-on: vikunja/frontend#99
Update dependency core-js to v3.6.4

Reviewed-on: vikunja/frontend#101
Update dependency copy-to-clipboard to v3.3.1

Reviewed-on: vikunja/frontend#100
Update dependency core-js to v3.6.5

Reviewed-on: vikunja/frontend#102
Update dependency date-fns to v2.12.0

Reviewed-on: vikunja/frontend#103
Update dependency bulma to v0.8.2

Reviewed-on: vikunja/frontend#104
Change all snake/camelCase mix and match to camelCase everywhere

Fix conversion to not interfer with service interceptors

Add dynamic conversion between camelCase and snake_case to services

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#105
Pin dependencies

Reviewed-on: vikunja/frontend#106
Add email update

Add settings link to menu

Add password update route

Add password update page

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#108
Fix not telling the user about invalid totp passcodes when logging in

Add disabling totp authentication

Add totp passcode when logging in

Add totp settings

Add general post method function

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#109
Frozen lockfile

Adjust to mutlistage build

Reviewed-on: vikunja/frontend#113
Update dependency vue-easymde to v1.2.0

Reviewed-on: vikunja/frontend#116
Update dependency node-sass to v4.14.0

Reviewed-on: vikunja/frontend#119
Add error message when trying to create an invalid new task in a bucket

Prevent creation of new buckets if the bucket title is empty

Disable deleting a bucket if it's the last one

Disable dragging tasks when they are being updated

Fix transition when opening tasks

Send the user to list view by default

Show loading spinner when updating multiple tasks

Add loading spinner when moving tasks

Add loading animation when bucket is loading / updating etc

Add bucket title edit

Fix creating new buckets

Add loading animation

Add removing buckets

Fix creating a new bucket after tasks were moved

Fix warning about labels on tasks

Fix labels on tasks not updating after retrieval from api

Fix property width

Add closing and mobile design

Make the task detail popup look good

Move list views

Move task detail view in a popup

Add link to tasks

Add saving the new task position after it was moved

Fix creating new bucket

Fix creating a new task

Cleanup

Disable user selection for task cards

Fix drag placeholder

Add dragging style to task

Add placeholder + change animation duration

More cleanup

Cleanup / docs

Working of dragging and dropping tasks

Adjust markup and styling for new library

Change kanban library to something that works

Add basic calculation of new positions

Don't try to create empty tasks

Add indicator if a task is done

Add moving tasks between buckets

Make empty buckets a little smaller

Add gimmick for button description

Fix color

Fix scrolling bucket layout

Add creating a new bucket

Add hiding the task input field

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#118
Pin dependency vue-smooth-dnd to 0.8.1

Reviewed-on: vikunja/frontend#120
Fix member/admin button overflowing

Fix changing team member admin status

Fix adding team members

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#121
Update Node.js to v13.14.0

Reviewed-on: vikunja/frontend#123
Reviewed-on: vikunja/frontend#124
Update dependency node-sass to v4.14.1

Reviewed-on: vikunja/frontend#125
Update dependency date-fns to v2.13.0

Reviewed-on: vikunja/frontend#127
Merge branch 'master' into feature/vuex

Cleanup

Move namespaces handling to store

Move fullpage setting to store

Move online/offline handling to store

Remove debug log

Fix loading namepaces

Rename errorMsg

Handle registering through the store

Use store to determine wether or not a user is authenticated on login page

Use store in edit team

Use store to get the current user's avatar

Use store to figure out if the current user belongs to a team

Use store to figure out if the current user is list admin

Use store to get user info when listing labels

Use store to get username on home

Use store to figure out if the user is namespace admin

Use the store for configuration

Use the store to check if a user is authenticated everywhere

Only renew token if the user is logged in

Fix renewing auth from jwt token

Move logout to store

Move renew token to store

Move log in to store

Only show enabled migrators

Only show registration button if registration is enabled

Put all config information from the backend in the store

Remove old config handler

Move config state to seperate module

Add vuex and get the motd through it

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#126
Pin dependency vuex to 3.3.0

Reviewed-on: vikunja/frontend#128
Fix due date disappearing after moving it

Fix removing labels not being updated in store

Fix adding labels not being updated in store

Fix removing assignees not being updated in store

Fix adding assignees not being updated in store

Fix due date not resetting

Fix task attachments not updating in store after being modified in popup view

Fix due date not updating in store after being modified in popup view

Fix using filters for overview views

Fix not re-loading tasks when switching between overviews

Only show undone tasks on task overview page

Update task in bucket when updating in task detail view

Put all bucket related stuff in store

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#130
Update dependency eslint to v7

Reviewed-on: vikunja/frontend#129
Update dependency vuex to v3.4.0

Reviewed-on: vikunja/frontend#132
Merge branch 'master' into fix/title-fields

Change task text field to title

Change namespace name field to title

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#134
Update dependency date-fns to v2.14.0

Reviewed-on: vikunja/frontend#136
Update dependency vue-router to v3.2.0

Reviewed-on: vikunja/frontend#137
Update dependency eslint to v7.1.0

Reviewed-on: vikunja/frontend#139
Update vue monorepo to v4.4.1

Reviewed-on: vikunja/frontend#140
Update dependency vue-router to v3.3.1

Reviewed-on: vikunja/frontend#141
Update dependency vue-router to v3.3.2

Reviewed-on: vikunja/frontend#142
Make backgrounds list responsive

Show initial collection of backgrounds

Remove test data

Fix "backgroundInformation is null" when navigating

Fix kanban height

Remove debug log

Move list title to top header

Add styling for title in top header

Set the current list (and background) when loading settings

Only load the background if it changed

Make task detail view look good again

Fix bottom spacing

Make list and table view look good again

Make pages with background at least 100vh

Fix kanban height

Make extra buttons look good again

Move list title and view-switcher in one row

Add styling for backgrounds

Set background globally

Add getting list background and putting it in vuex

Add setting list background

Move list background setting to seperate list

Add search timeout to not search on every keypress

Add getting thumbnails through api

Add basic search for unsplash backgrounds

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#144
Update dependency vue-easymde to v1.2.1

Reviewed-on: vikunja/frontend#145
Update dependency bulma to v0.9.0

Reviewed-on: vikunja/frontend#150
Update dependency eslint to v7.2.0

Reviewed-on: vikunja/frontend#148
Set done filter based on passed params

Make due date filter actually work

Move filters into seperate config

Merge branch 'master' into feature/task-filters

Change done task filter text

Make sure done tasks are always shown in table view

Table view filter improvements

Add done filter to table view

Fix indent

Add filter icon

Move search and filter container

Add filter for done tasks

Hide done tasks by default

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#149
Formatting

Show loading if a file is uploading

Only show image files in upload

Hide background settings if none are available

Fix showing uploaded background after uploading a new one

Add background upload

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#151
Update vue monorepo

Reviewed-on: vikunja/frontend#153
Update vue monorepo to v4.4.4

Reviewed-on: vikunja/frontend#154
Update dependency vue-router to v3.3.4

Reviewed-on: vikunja/frontend#156
Add reset to color picker

Move all usages of verte to seperate component

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#157
Update dependency @fortawesome/vue-fontawesome to v0.1.10

Reviewed-on: vikunja/frontend#158
Format

Add migration to Settings

Merge branch 'master' into feature/hide-hints

Hide hints on start page if a user has tasks

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#159
Center list backgrounds

Better alignment of new namespace and filter button

Make creating new namespace button clear

Hide archived lists unless the user wants it

Make all cards responsive

Cleanup

Show it if a namespace is archived

Show if a list is archived

Fix not updating the list in store after updating the background

Make task cards smaller

Display list backgrounds in cards and look good while doing it

lighter shadow

Change background to stripes

Set list backgrounds as card backgrounds

Add background color check to color appropriatly

Move color check to mixin

Use background color from tasks

Change list card color

Make create new namespace button stick to the right

Shadow all the things

Don't keep list backgrounds set when navigating back

Make links to list clickable

Add seperate page for namespaces

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/frontend#160