We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 2ec0eaf commit 04feb02Copy full SHA for 04feb02
dbschema/common.esdl
@@ -1,6 +1,7 @@
1
module default {
2
- global currentUserId: uuid;
3
- alias currentUser := <User>(global currentUserId);
+ global currentActorId: uuid;
+ global currentActor := (select Actor filter .id = global currentActorId);
4
+ global currentUser := (select User filter .id = global currentActorId);
5
6
scalar type ReportPeriod extending enum<Monthly, Quarterly>;
7
dbschema/engagement.esdl
@@ -76,8 +76,8 @@ module default {
76
insert Engagement::DedicationCeremony {
77
createdAt := datetime_of_statement(),
78
modifiedAt := datetime_of_statement(),
79
- createdBy := assert_exists(currentUser),
80
- modifiedBy := assert_exists(currentUser),
+ createdBy := assert_exists(global currentActor),
+ modifiedBy := assert_exists(global currentActor),
81
engagement := __new__,
82
project := __new__.project,
83
projectContext := __new__.projectContext,
@@ -130,8 +130,8 @@ module default {
130
insert Engagement::CertificationCeremony {
131
132
133
134
135
136
137
dbschema/progress-report.esdl
@@ -75,7 +75,7 @@ module ProgressReport {
75
};
required who: default::User {
readonly := true;
- default := default::currentUser;
+ default := global default::currentUser;
required at: datetime {
dbschema/project.esdl
@@ -72,7 +72,7 @@ module default {
72
financialReportPeriod: ReportPeriod;
73
74
multi link members := .<project[is Project::Member];
- single link membership := (select .members filter .user.id = global default::currentUserId limit 1);
+ single link membership := (select .members filter .user = global default::currentUser limit 1);
# multi link engagements := .<project[is Engagement];
property engagementTotal := count(.<project[is Engagement]);
@@ -106,8 +106,8 @@ module default {
106
insert default::Budget {
107
108
109
110
111
project := __new__,
112
113
}
dbschema/prompt-variant-response.esdl
@@ -6,7 +6,7 @@ module Prompt {
responses := .<pvr[is VariantResponse];
8
9
- type VariantResponse extending Mixin::UserStamped, Mixin::Timestamped {
+ type VariantResponse extending Mixin::Audited {
10
annotation description := "A response (for a variant) to an instance of a prompt.";
11
12
required pvr: PromptVariantResponse;
dbschema/resource.esdl
@@ -1,3 +1,3 @@
- abstract type Resource extending Mixin::UserStamped, Mixin::Timestamped;
+ abstract type Resource extending Mixin::Audited;
dbschema/z.pinnable.esdl
@@ -1,5 +1,8 @@
module Mixin {
abstract type Pinnable {
- property pinned := __source__ in (<default::User>global default::currentUserId).pins;
+ property pinned := (
+ with user := (select default::User filter .id = global default::currentActorId)
+ select __source__ in user.pins
+ );
dbschema/z.stamped.esdl
@@ -1,15 +1,15 @@
- abstract type UserStamped {
- required createdBy: default::User {
+ abstract type Audited extending Timestamped {
+ required createdBy: default::Actor {
+ default := global default::currentActor;
- required modifiedBy: default::User {
- rewrite update using (default::currentUser);
+ required modifiedBy: default::Actor {
+ rewrite update using (global default::currentActor);
- required isCreator := .createdBy ?= <default::User>(global default::currentUserId)
+ required isCreator := .createdBy ?= global default::currentActor;
13
14
15
abstract type Timestamped {
src/components/authentication/current-user.provider.ts
@@ -72,10 +72,10 @@ export class EdgeDBCurrentUserProvider
) {
// TODO temporarily check if UUID before applying global.
// Once migration is complete this can be removed.
- const currentUserId =
+ const currentActorId =
session?.userId && isUUID(session.userId) ? session.userId : undefined;
optionsHolder.next((options) =>
- currentUserId ? options.withGlobals({ currentUserId }) : options,
+ currentActorId ? options.withGlobals({ currentActorId }) : options,
);
src/components/authorization/policies/conditions/self.condition.ts
@@ -3,7 +3,9 @@ import { inspect, InspectOptionsStylized } from 'util';
import { User } from '../../../user/dto';
import {
AsCypherParams,
+ AsEdgeQLParams,
Condition,
+ fqnRelativeTo,
IsAllowedParams,
} from '../../policy/conditions';
@@ -40,8 +42,9 @@ class SelfCondition<TResourceStatic extends typeof User>
40
42
return `node:User AND node.id = ${requester}`;
41
43
44
- asEdgeQLCondition() {
- return '.id ?= global default::currentUserId';
45
+ asEdgeQLCondition({ namespace }: AsEdgeQLParams<any>) {
46
+ const currentId = fqnRelativeTo('default::currentActorId', namespace);
47
+ return `.id ?= global ${currentId}`;
48
49
50
union(this: void, conditions: this[]) {
0 commit comments