basic ideas

This commit is contained in:
kolaente 2019-08-18 21:28:51 +02:00
parent 154ddfe5e0
commit c943e1b0e7
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
2 changed files with 27 additions and 0 deletions

View File

@ -17,6 +17,8 @@
package models
import "code.vikunja.io/web"
type SharingType int
const (
@ -25,6 +27,17 @@ const (
SharingTypeWithPassword
)
/*
General Idea:
* We have the usual get/create/delete stuff behind the web handler, same procedure as everywhere
* These routes are behind jwt token auth
* One needs at least write access to a list to be able to share it via a link -> Document that somewhere!
* Then we have a second struct which has "hash" and thats it. Maybe with a pointer to the list in it.
* We then have the usual CRUD-Routes on a list, with a different set of routes and using a different handler.
* Through that other routes and handler, the handler checks if the hash exists and if it requires a password.
* It then passes the request on directly to the actual CRUD implementation of the list, but without their right checks.
*/
type LinkSharing struct {
// The ID of the shared thing
ID int64 `xorm:"int(11) autoincr not null unique pk" json:"id"`
@ -48,4 +61,7 @@ type LinkSharing struct {
Created int64 `xorm:"created not null" json:"created"`
// A unix timestamp when this share was last updated. You cannot change this value.
Updated int64 `xorm:"updated not null" json:"updated"`
web.CRUDable `xorm:"-" json:"-"`
web.Rights `xorm:"-" json:"-"`
}

View File

@ -194,6 +194,17 @@ func registerAPIRoutes(a *echo.Group) {
a.PUT("/namespaces/:namespace/lists", listHandler.CreateWeb)
a.GET("/lists/:list/listusers", apiv1.ListUsersForList)
listSharingHandler := &handler.WebHandler{
EmptyStruct: func() handler.CObject {
return &models.LinkSharing{}
},
}
a.PUT("/lists/:list/shares/new", listSharingHandler.CreateWeb)
a.GET("/lists/:list/shares", listSharingHandler.ReadAllWeb)
a.GET("/lists/:list/shares/:hash", listSharingHandler.ReadOneWeb)
a.DELETE("/lists/:list/shares/:hash", listSharingHandler.DeleteWeb)
taskHandler := &handler.WebHandler{
EmptyStruct: func() handler.CObject {
return &models.Task{}