S2S: Relax role requirements for adding-resource-to-team
- Factory.Add now requires write instead of admin - Group.Add.Resource now allows any role, not necessarily admin
This commit is contained in:
parent
a418e21ee2
commit
d52eacd2a3
2 changed files with 35 additions and 23 deletions
|
@ -643,8 +643,8 @@ factoryAdd now factoryID (Verse authorIdMsig body) add = do
|
||||||
|
|
||||||
let author = bimap (view _1) (remoteAuthorURI . view _1) authorIdMsig
|
let author = bimap (view _1) (remoteAuthorURI . view _1) authorIdMsig
|
||||||
(object, target, role) <- parseAdd author add
|
(object, target, role) <- parseAdd author add
|
||||||
unless (role == AP.RoleAdmin) $
|
unless (role == AP.RoleWrite) $
|
||||||
throwE "Add role isn't admin"
|
throwE "Add role isn't write"
|
||||||
case (target, object) of
|
case (target, object) of
|
||||||
(Left (ATFactoryTeams j), _) | j == factoryID ->
|
(Left (ATFactoryTeams j), _) | j == factoryID ->
|
||||||
addTeamActive object
|
addTeamActive object
|
||||||
|
@ -796,7 +796,7 @@ factoryAdd now factoryID (Verse authorIdMsig body) add = do
|
||||||
where
|
where
|
||||||
|
|
||||||
insertSquad resourceID topicDB addDB acceptID = do
|
insertSquad resourceID topicDB addDB acceptID = do
|
||||||
squadID <- insert $ Squad AP.RoleAdmin resourceID
|
squadID <- insert $ Squad AP.RoleWrite resourceID
|
||||||
case topicDB of
|
case topicDB of
|
||||||
Left (Entity g _) -> insert_ $ SquadTopicLocal squadID g
|
Left (Entity g _) -> insert_ $ SquadTopicLocal squadID g
|
||||||
Right a -> insert_ $ SquadTopicRemote squadID a
|
Right a -> insert_ $ SquadTopicRemote squadID a
|
||||||
|
@ -910,7 +910,7 @@ factoryAdd now factoryID (Verse authorIdMsig body) add = do
|
||||||
where
|
where
|
||||||
|
|
||||||
insertSquad resourceID topicDB addDB = do
|
insertSquad resourceID topicDB addDB = do
|
||||||
squadID <- insert $ Squad AP.RoleAdmin resourceID
|
squadID <- insert $ Squad AP.RoleWrite resourceID
|
||||||
case topicDB of
|
case topicDB of
|
||||||
Left (Entity g _) -> insert_ $ SquadTopicLocal squadID g
|
Left (Entity g _) -> insert_ $ SquadTopicLocal squadID g
|
||||||
Right a -> insert_ $ SquadTopicRemote squadID a
|
Right a -> insert_ $ SquadTopicRemote squadID a
|
||||||
|
|
|
@ -169,23 +169,23 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
|
|
||||||
let author = bimap (view _1) (remoteAuthorURI . view _1) authorIdMsig
|
let author = bimap (view _1) (remoteAuthorURI . view _1) authorIdMsig
|
||||||
(object, target, role) <- parseAdd author add
|
(object, target, role) <- parseAdd author add
|
||||||
unless (role == AP.RoleAdmin) $
|
--unless (role == AP.RoleAdmin) $
|
||||||
throwE "Add role isn't admin"
|
-- throwE "Add role isn't admin"
|
||||||
case (target, object) of
|
case (target, object) of
|
||||||
(Left (ATGroupChildren j), _) | j == groupID ->
|
(Left (ATGroupChildren j), _) | j == groupID ->
|
||||||
addChildActive object
|
addChildActive role object
|
||||||
(Left (ATGroupParents j), _) | j == groupID ->
|
(Left (ATGroupParents j), _) | j == groupID ->
|
||||||
addParentActive object
|
addParentActive role object
|
||||||
(Left (ATGroupEfforts j), _) | j == groupID ->
|
(Left (ATGroupEfforts j), _) | j == groupID ->
|
||||||
addResourceActive object
|
addResourceActive role object
|
||||||
(_, Left (LocalActorGroup j)) | j == groupID ->
|
(_, Left (LocalActorGroup j)) | j == groupID ->
|
||||||
case target of
|
case target of
|
||||||
Left (ATGroupParents j) | j /= groupID ->
|
Left (ATGroupParents j) | j /= groupID ->
|
||||||
addChildPassive $ Left j
|
addChildPassive role $ Left j
|
||||||
Left (ATGroupChildren j) | j /= groupID ->
|
Left (ATGroupChildren j) | j /= groupID ->
|
||||||
addParentPassive $ Left j
|
addParentPassive role $ Left j
|
||||||
Left at | isJust $ addTargetResourceTeams at ->
|
Left at | isJust $ addTargetResourceTeams at ->
|
||||||
addResourcePassive $ Left $ fromJust $ addTargetResourceTeams at
|
addResourcePassive role $ Left $ fromJust $ addTargetResourceTeams at
|
||||||
Right (ObjURI h luColl) -> do
|
Right (ObjURI h luColl) -> do
|
||||||
-- NOTE this is HTTP GET done synchronously in the activity
|
-- NOTE this is HTTP GET done synchronously in the activity
|
||||||
-- handler
|
-- handler
|
||||||
|
@ -199,11 +199,11 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
AP.ResourceChild _ _ -> throwE "Add.target remote ResourceChild"
|
AP.ResourceChild _ _ -> throwE "Add.target remote ResourceChild"
|
||||||
let typ = AP.actorType d
|
let typ = AP.actorType d
|
||||||
if typ == AP.ActorTypeTeam && Just luColl == AP.rwcSubteams rwc
|
if typ == AP.ActorTypeTeam && Just luColl == AP.rwcSubteams rwc
|
||||||
then addParentPassive $ Right $ ObjURI h lu
|
then addParentPassive role $ Right $ ObjURI h lu
|
||||||
else if typ == AP.ActorTypeTeam && Just luColl == AP.rwcParentsOrProjects rwc
|
else if typ == AP.ActorTypeTeam && Just luColl == AP.rwcParentsOrProjects rwc
|
||||||
then addChildPassive $ Right $ ObjURI h lu
|
then addChildPassive role $ Right $ ObjURI h lu
|
||||||
else if AP.actorTypeIsResourceNT typ && Just luColl == AP.rwcTeams rwc
|
else if AP.actorTypeIsResourceNT typ && Just luColl == AP.rwcTeams rwc
|
||||||
then addResourcePassive $ Right $ ObjURI h lu
|
then addResourcePassive role $ Right $ ObjURI h lu
|
||||||
else throwE "Weird collection situation"
|
else throwE "Weird collection situation"
|
||||||
_ -> throwE "I'm being added somewhere irrelevant"
|
_ -> throwE "I'm being added somewhere irrelevant"
|
||||||
_ -> throwE "This Add isn't for me"
|
_ -> throwE "This Add isn't for me"
|
||||||
|
@ -243,7 +243,10 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
|
|
||||||
return (action, recipientSet, remoteActors, fwdHosts)
|
return (action, recipientSet, remoteActors, fwdHosts)
|
||||||
|
|
||||||
addParentActive parent = do
|
addParentActive role parent = do
|
||||||
|
|
||||||
|
unless (role == AP.RoleAdmin) $
|
||||||
|
throwE "Add role isn't admin"
|
||||||
|
|
||||||
-- If parent is local, find it in our DB
|
-- If parent is local, find it in our DB
|
||||||
-- If parent is remote, HTTP GET it, verify it's an actor of Group
|
-- If parent is remote, HTTP GET it, verify it's an actor of Group
|
||||||
|
@ -353,7 +356,10 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
|
|
||||||
insert_ $ SourceUsAccept usID acceptID
|
insert_ $ SourceUsAccept usID acceptID
|
||||||
|
|
||||||
addChildActive child = do
|
addChildActive role child = do
|
||||||
|
|
||||||
|
unless (role == AP.RoleAdmin) $
|
||||||
|
throwE "Add role isn't admin"
|
||||||
|
|
||||||
-- If child is local, find it in our DB
|
-- If child is local, find it in our DB
|
||||||
-- If child is remote, HTTP GET it, verify it's an actor of Group
|
-- If child is remote, HTTP GET it, verify it's an actor of Group
|
||||||
|
@ -463,7 +469,10 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
|
|
||||||
insert_ $ DestUsAccept destID acceptID
|
insert_ $ DestUsAccept destID acceptID
|
||||||
|
|
||||||
addParentPassive parent = do
|
addParentPassive role parent = do
|
||||||
|
|
||||||
|
unless (role == AP.RoleAdmin) $
|
||||||
|
throwE "Add role isn't admin"
|
||||||
|
|
||||||
-- If parent is local, find it in our DB
|
-- If parent is local, find it in our DB
|
||||||
-- If parent is remote, HTTP GET it, verify it's an actor of Group
|
-- If parent is remote, HTTP GET it, verify it's an actor of Group
|
||||||
|
@ -548,7 +557,10 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
Right (author, _, addID) ->
|
Right (author, _, addID) ->
|
||||||
insert_ $ SourceThemGestureRemote themID (remoteAuthorId author) addID
|
insert_ $ SourceThemGestureRemote themID (remoteAuthorId author) addID
|
||||||
|
|
||||||
addChildPassive child = do
|
addChildPassive role child = do
|
||||||
|
|
||||||
|
unless (role == AP.RoleAdmin) $
|
||||||
|
throwE "Add role isn't admin"
|
||||||
|
|
||||||
-- If child is local, find it in our DB
|
-- If child is local, find it in our DB
|
||||||
-- If child is remote, HTTP GET it, verify it's an actor of Group
|
-- If child is remote, HTTP GET it, verify it's an actor of Group
|
||||||
|
@ -633,7 +645,7 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
Right (author, _, addID) ->
|
Right (author, _, addID) ->
|
||||||
insert_ $ DestThemGestureRemote themID (remoteAuthorId author) addID
|
insert_ $ DestThemGestureRemote themID (remoteAuthorId author) addID
|
||||||
|
|
||||||
addResourceActive resource = do
|
addResourceActive role resource = do
|
||||||
|
|
||||||
-- If resource is local, find it in our DB
|
-- If resource is local, find it in our DB
|
||||||
-- If resource is remote, HTTP GET it, verify it's an actor of Group
|
-- If resource is remote, HTTP GET it, verify it's an actor of Group
|
||||||
|
@ -724,7 +736,7 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
where
|
where
|
||||||
|
|
||||||
insertEffort topicDB addDB acceptID = do
|
insertEffort topicDB addDB acceptID = do
|
||||||
effortID <- insert $ Effort AP.RoleAdmin groupID
|
effortID <- insert $ Effort role groupID
|
||||||
case topicDB of
|
case topicDB of
|
||||||
Left r -> insert_ $ EffortTopicLocal effortID r
|
Left r -> insert_ $ EffortTopicLocal effortID r
|
||||||
Right a -> insert_ $ EffortTopicRemote effortID a
|
Right a -> insert_ $ EffortTopicRemote effortID a
|
||||||
|
@ -770,7 +782,7 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
|
|
||||||
return (action, recipientSet, remoteActors, fwdHosts)
|
return (action, recipientSet, remoteActors, fwdHosts)
|
||||||
|
|
||||||
addResourcePassive resource = do
|
addResourcePassive role resource = do
|
||||||
|
|
||||||
-- If resource is local, find it in our DB
|
-- If resource is local, find it in our DB
|
||||||
-- If resource is remote, HTTP GET it, verify it's an actor of Group
|
-- If resource is remote, HTTP GET it, verify it's an actor of Group
|
||||||
|
@ -840,7 +852,7 @@ groupAdd now groupID (Verse authorIdMsig body) add = do
|
||||||
where
|
where
|
||||||
|
|
||||||
insertEffort topicDB addDB = do
|
insertEffort topicDB addDB = do
|
||||||
effortID <- insert $ Effort AP.RoleAdmin groupID
|
effortID <- insert $ Effort role groupID
|
||||||
case topicDB of
|
case topicDB of
|
||||||
Left r -> insert_ $ EffortTopicLocal effortID r
|
Left r -> insert_ $ EffortTopicLocal effortID r
|
||||||
Right a -> insert_ $ EffortTopicRemote effortID a
|
Right a -> insert_ $ EffortTopicRemote effortID a
|
||||||
|
|
Loading…
Reference in a new issue