1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-23 07:09:43 +02:00

Support for document draft-live publication workflows

This commit is contained in:
McMatts 2018-04-20 14:38:35 +01:00
parent bde0091a4a
commit 9235c183c5
14 changed files with 828 additions and 697 deletions

View file

@ -227,8 +227,74 @@ func HasPermission(ctx domain.RequestContext, s domain.Store, spaceID string, ac
return false
}
// GetDocumentApprovers returns list of users who can approve given document in given space
func GetDocumentApprovers(ctx domain.RequestContext, s domain.Store, spaceID, documentID string) (users []u.User, err error) {
// // GetDocumentApprovers returns list of users who can approve given document in given space
// func GetDocumentApprovers(ctx domain.RequestContext, s domain.Store, spaceID, documentID string) (users []u.User, err error) {
// users = []u.User{}
// prev := make(map[string]bool) // used to ensure we only process user once
// // Permissions can be assigned to both groups and individual users.
// // Pre-fetch users with group membership to help us work out
// // if user belongs to a group with permissions.
// groupMembers, err := s.Group.GetMembers(ctx)
// if err != nil {
// return users, err
// }
// // space permissions
// sp, err := s.Permission.GetSpacePermissions(ctx, spaceID)
// if err != nil {
// return users, err
// }
// // document permissions
// dp, err := s.Permission.GetDocumentPermissions(ctx, documentID)
// if err != nil {
// return users, err
// }
// // all permissions
// all := sp
// all = append(all, dp...)
// for _, p := range all {
// // only approvers
// if p.Action != pm.DocumentApprove {
// continue
// }
// if p.Who == pm.GroupPermission {
// // get group records for just this group
// groupRecords := group.FilterGroupRecords(groupMembers, p.WhoID)
// for i := range groupRecords {
// user, err := s.User.Get(ctx, groupRecords[i].UserID)
// if err != nil {
// return users, err
// }
// if _, isExisting := prev[user.RefID]; !isExisting {
// users = append(users, user)
// prev[user.RefID] = true
// }
// }
// }
// if p.Who == pm.UserPermission {
// user, err := s.User.Get(ctx, p.WhoID)
// if err != nil {
// return users, err
// }
// if _, isExisting := prev[user.RefID]; !isExisting {
// users = append(users, user)
// prev[user.RefID] = true
// }
// }
// }
// return users, err
// }
// GetUsersWithDocumentPermission returns list of users who have specified document permission in given space
func GetUsersWithDocumentPermission(ctx domain.RequestContext, s domain.Store, spaceID, documentID string, permissionRequired pm.Action) (users []u.User, err error) {
users = []u.User{}
prev := make(map[string]bool) // used to ensure we only process user once
@ -257,7 +323,7 @@ func GetDocumentApprovers(ctx domain.RequestContext, s domain.Store, spaceID, do
for _, p := range all {
// only approvers
if p.Action != pm.DocumentApprove {
if p.Action != permissionRequired {
continue
}