Commit graph

1436 commits

Author SHA1 Message Date
Pere Lev
0c0007c892
C2S: Person: Implement Join handler, inserting a Permit record to DB 2023-11-22 23:12:32 +02:00
Pere Lev
3c0a3d1317
S2S: Person: Update Invite handler to create a Permit record 2023-11-22 19:30:33 +02:00
Pere Lev
05d3a1eaef
DB: Tables for the person side of Collabs (i.e. direct-Grants they got)
Until now I've managed to avoid having to implement this piece quite
easily. The only temptation to implement it has been pseudo-client
features, which are basically just a workaround until Vervis gets a
separate client app.

But now, Person actors need to be able to automatically send
delegator-Grants when they receive a direct-Grant from a resource they
either asked to Join or got an Invite to. So, this creates a need to
track these joins and invites on the server side.

I'm not checking the exact minimal pieces necessary for
delegator-Grants. Instead, I'm starting a full implementation of the
person-side of Collab records (AKA direct-Grants), called Permit
records. This will also allow very convenient display of these Grants
and the extensions received through them, as well as UI buttons such as
accepting/rejecting a received Join or Invite.
2023-11-22 18:11:07 +02:00
Pere Lev
88e6818edc
S2S: Project: Send ext-Grants to new collab upon getting their delegator-Grant
Until now, adding a direct collaborator to a Project worked exactly like
with components: Invite or Join, then Accept, finally the direct-Grant.
I missed the fact that much like with project-component relationships,
projects (and teams) need to be able to send extension-Grants to their
direct collaborators.

So in Project's Grant handler it now:

- Recognizes the delegator-Grant coming from a new collaborator
- Sends extension-Grants, using the delegator-Grant as the capability
- When getting a new component and sending extension-Grants for it to
  direct collaborators, Project uses their delegator-Grants as
  capability

And in Project's Accept handler, it no longer sends extension-Grants
(because it doesn't yet have the collaborator's delegator-Grant at this
point).

NOTE, THIS TEMPORARILY BREAKS grant chains: If you create a Project and
add a Deck to it, you won't get an extension-Grant-for-the-Deck from the
Project, because the Project doesn't yet have your delegator-Grant.

The next commits will implement the Person-side of Collab records, and
will cause Person actors to automatically send the delegator-Grant,
fixing the break.
2023-11-22 14:16:08 +02:00
Pere Lev
5d0f707c55
DB: Allow to record the delegator-Grant sent by people to projects/teams 2023-11-21 20:44:09 +02:00
Pere Lev
7517db9619
Client, UI: Team: Creation, invite/join display, list in personal overview 2023-11-21 18:28:05 +02:00
Pere Lev
8584c6387c
S2S: Group: Implement Follow & Undo handlers, adapted from Project 2023-11-21 17:02:58 +02:00
Pere Lev
8d543c0016
S2S: Group: Implement Create handler, sending back an admin-Grant 2023-11-21 16:52:16 +02:00
Pere Lev
ea7476db9d
C2S: Implement team creation 2023-11-21 15:48:14 +02:00
Pere Lev
2797e5f3be
UI: Team & team members HTML page + AP JSON object 2023-11-21 15:01:51 +02:00
Pere Lev
80a08dea0a
UI: Browse: Update intro text & list projects' components 2023-11-21 10:56:09 +02:00
Pere Lev
840b13eff1
UI: Tweak the footer repo/commit display 2023-11-21 10:55:38 +02:00
Pere Lev
22c7b88a79
Remove federation check from PublishResolveR 2023-11-13 14:15:13 +02:00
Pere Lev
34386bcf52
S2S: Deck: Resolve: Use the full OCAP-authorization algorithm
deckResolve now supports Resolve requests that use extension-Grants. It
iterates the verifies the Grant-chain using the process described in the
ForgeFed specification.
2023-11-12 17:43:11 +02:00
Pere Lev
1a3a46b6b2
Implement OCAP "Verifying an invocation" process from ForgeFed spec
Vervis currently supports only direct grants. The new process supports
delegation chains as well. This commit just implements the new process
as a new function, without yet using it anywhere. The next commits will
plug it into Deck actor handlers.
2023-11-07 10:51:42 +02:00
Pere Lev
b420c982c0
UI: Add page for publishing a Resolve with custom ticket and OCAP URIs 2023-11-05 20:41:24 +02:00
Pere Lev
91ed2c82b5
UI: Add reopen-this-ticket button to ticket page 2023-11-05 17:50:55 +02:00
Pere Lev
ebe676d94b
Client: Port/implement pseudo-client for unresolve-a-ticket 2023-11-05 17:41:16 +02:00
Pere Lev
3a95e6d302
C2S: Implement trivial Undo handler, remove old undoC code 2023-11-05 16:27:38 +02:00
Pere Lev
cbd81d1d0b
C2S, UI: Deck ticket closing button on ticket page
Ticket closing can now be done via the new C2S, and the "Close ticket"
button on TicketR page is back, and uses that new C2S.

S2S, C2S and pseudo-client are implemented for both Deck and Loom, but
the actual button and POST handler are provided here only for Deck. Will
add ones for Loom soon, as needed.
2023-11-05 16:13:09 +02:00
Pere Lev
222ba823c1
S2S: Person: Trivial Resolve handler 2023-11-05 12:52:16 +02:00
Pere Lev
35eb4917a1
S2S: Port Deck's & Loom's Resolve handlers from the old system 2023-11-05 12:40:19 +02:00
Pere Lev
cb693184f8
UI: Use the actor system for opening a ticket, and remove offerTicketC 2023-11-05 11:31:36 +02:00
Pere Lev
be569ab26d
C2S: Implement Offer{ticket/MR} handler 2023-11-03 14:55:34 +02:00
Pere Lev
a06003c361
S2S: Loom: Port Offer{MR} handler from old federation code
This is to allow getting rid of the old C2S offerTicketC and write a C2S
Offer handler in the new actor system.

And that is to allow ticket opening and closing to work, so that it can
use delegated OCAPs too, as a first demo of delegated OCAPs in action.
2023-11-03 14:18:41 +02:00
Pere Lev
909ba94b49
S2S: Person: Implement trivial Offer handler 2023-11-03 11:08:35 +02:00
Pere Lev
1694d77705
S2S: Deck: Port the Offer{Ticket} handler from the old code 2023-11-03 10:56:25 +02:00
Pere Lev
7edb7a9760
Fix some little bugs in component implementation 2023-11-02 23:14:29 +02:00
Pere Lev
df6ece2889
UI: Deck: 'Approve' button for accepting invites-to-projects 2023-11-02 22:27:54 +02:00
Pere Lev
47f993d63f
Client: Project UI for adding a component 2023-11-02 18:03:28 +02:00
Pere Lev
fe6f95d497
UI: Deck: Projects list page 2023-11-02 14:48:22 +02:00
Pere Lev
acc1d13c63
UI: Project: Component list HTML version 2023-11-02 12:35:35 +02:00
Pere Lev
5d52db9377
C2S: Implement Accept handler (without any filters) 2023-10-23 19:39:58 +03:00
Pere Lev
14ef892032
C2S: Implement Add handler, for adding a component to a project 2023-10-23 19:11:51 +03:00
Pere Lev
477793688f
C2S: Invite: Support component mode 2023-10-23 18:26:44 +03:00
Pere Lev
21aa4e7c49
S2S: projectAccept: When adding a Collab, delegate access-to-my-components 2023-10-23 15:21:12 +03:00
Pere Lev
fa43a49b16
S2S: Person Grant handler: Handle component-mode Grants too 2023-09-09 17:01:18 +03:00
Pere Lev
4ac73a9515
S2S: Implement component delegator-Grant handler 2023-09-09 16:41:12 +03:00
Pere Lev
9a78c83233
S2S: Deck Accept handler: Implement component mode 2023-09-01 19:50:48 +03:00
Pere Lev
e8970c1f4a
S2S: Deck Invite handler: Implement component mode 2023-08-14 15:24:08 +03:00
Pere Lev
521eed8bb2
S2S: Deck Add handler 2023-08-02 15:13:54 +03:00
Pere Lev
06e5ab9e90
S2S: Project Grant handler 2023-07-17 20:57:19 +03:00
Pere Lev
a083b0d866
S2S: Update Project-Accept handler to handle Components 2023-07-12 16:50:29 +03:00
Pere Lev
aec2235fdc
S2S: Project Add handler: Rearrange code in preparation for Component mode
Also add Component mode details into the behavior comment (but haven't
yet implemented the newly described Component-mode behavior)
2023-06-29 20:56:03 +03:00
Pere Lev
2920deb900
S2S: Copy topicAccept code into projectAccept and reorganize the comment
This is in preparation to implementing Component mode
2023-06-29 14:48:55 +03:00
Pere Lev
afb83b7761
Add a ProjectCollabLiveR route for use as Grant revocation URI 2023-06-28 22:24:01 +03:00
Pere Lev
4a2f97d9dd
S2S: Upgrade the Project Invite handler to handle components 2023-06-28 21:34:19 +03:00
Pere Lev
5e87dd99d3
DB: Make the Accept unique per CollabFulfillsInvite 2023-06-28 14:18:45 +03:00
Pere Lev
afc45257b4
S2S: topicInvite, projectInvite: If approved, send an Accept 2023-06-28 14:10:09 +03:00
Pere Lev
b45aa78d7b
Copy topicInvite impl into projectInvite instead of reusing topicInvite
That's because projectInvite is about to get changes and can't use
topicInvite anymore; that's probably suitable only for components
2023-06-28 10:44:13 +03:00