* Initial Typescript models.

* Re-add realtime data

* get distinct sessions for session metrics

* Add queries for new schema.

* Fix Typo.

* Add some api/team endpoints.

* Fix destructure error.

* Fix getWebsites call.

* Ignore typescript build errors.

* Fix enum issue.

* add clickhouse route to deleteWebsite

* Fix Website auth.

* Updated lint-staged config.

* Add permission checks.

* Add user role api.

* Fix error when updating website.

* Fix isAdmin check.  Fix Schema.

* Initial conversion to react-basics.

* Remove user/team transfer from website update.

* delete website in relational query

* Fix login secure token creation.

* Add event type to event.

* Allow user to be added to team with role.

* Updated login form.

* Add Role to TeamUser.

* Add database migration.

* Refactored permissions check. Updated redis lib.

* Feat/um 114 roles and permissions (#1683)

* Auth checkpoint.

* Merge branch 'dev' into feat/um-114-roles-and-permissions

* Add 02 migration.

* Added lib/types.

* Updated schema.

* Updated roles and permissions logic.

* Implement react-basics styles. Fix queries.

* Update website details layout.

* Add 01 migration.

* Fix admin create.

* Update react-basics.

Co-authored-by: Francis Cao <franciscao@gmail.com>
Co-authored-by: Mike Cao <mike@mikecao.com>
Co-authored-by: Mike Cao <moocao@gmail.com>
This commit is contained in:
Brian Cao 2022-12-12 19:45:38 -08:00 committed by GitHub
parent 94848cc41b
commit 8732d056dd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
165 changed files with 3370 additions and 6268 deletions

View file

@ -2,9 +2,9 @@
display: flex;
justify-content: center;
align-items: center;
font-size: var(--font-size-normal);
color: var(--gray900);
background: var(--gray100);
font-size: var(--font-size-md);
color: var(--base900);
background: var(--base100);
padding: 8px 16px;
border-radius: 4px;
border: 0;
@ -14,11 +14,11 @@
}
.button:hover {
background: var(--gray200);
background: var(--base200);
}
.button:active {
color: var(--gray900);
color: var(--base900);
}
.label {
@ -29,30 +29,30 @@
}
.large {
font-size: var(--font-size-large);
font-size: var(--font-size-lg);
}
.small {
font-size: var(--font-size-small);
font-size: var(--font-size-sm);
}
.xsmall {
font-size: var(--font-size-xsmall);
font-size: var(--font-size-xs);
}
.action,
.action:active {
color: var(--gray50);
background: var(--gray900);
color: var(--base50);
background: var(--base900);
}
.action:hover {
background: var(--gray800);
background: var(--base800);
}
.danger,
.danger:active {
color: var(--gray50);
color: var(--base50);
background: var(--red500);
}
@ -62,7 +62,7 @@
.light,
.light:active {
color: var(--gray900);
color: var(--base900);
background: transparent;
}
@ -85,18 +85,18 @@
.button:disabled {
cursor: default;
color: var(--gray500);
background: var(--gray75);
color: var(--base500);
background: var(--base75);
}
.button:disabled:active {
color: var(--gray500);
color: var(--base500);
}
.button:disabled:hover {
background: var(--gray75);
background: var(--base75);
}
.button.light:disabled {
background: var(--gray50);
background: var(--base50);
}

View file

@ -2,14 +2,14 @@
display: inline-flex;
border-radius: 4px;
overflow: hidden;
border: 1px solid var(--gray500);
border: 1px solid var(--base500);
}
.group .button {
border-radius: 0;
color: var(--gray800);
background: var(--gray50);
border-left: 1px solid var(--gray500);
color: var(--base800);
background: var(--base50);
border-left: 1px solid var(--base500);
padding: 4px 8px;
}
@ -18,7 +18,7 @@
}
.group .button:hover {
background: var(--gray100);
background: var(--base100);
}
.group .button + .button {
@ -26,6 +26,6 @@
}
.group .button.selected {
color: var(--gray900);
color: var(--base900);
font-weight: 600;
}

View file

@ -1,7 +1,7 @@
.calendar {
display: flex;
flex-direction: column;
font-size: var(--font-size-small);
font-size: var(--font-size-sm);
flex: 1;
min-height: 306px;
}
@ -12,7 +12,7 @@
}
.calendar td {
color: var(--gray800);
color: var(--base800);
cursor: pointer;
text-align: center;
vertical-align: center;
@ -23,17 +23,17 @@
}
.calendar td:hover {
border: 1px solid var(--gray300);
background: var(--gray75);
border: 1px solid var(--base300);
background: var(--base75);
}
.calendar td.faded {
color: var(--gray500);
color: var(--base500);
}
.calendar td.selected {
font-weight: 600;
border: 1px solid var(--gray600);
border: 1px solid var(--base600);
}
.calendar td.selected:hover {
@ -41,18 +41,18 @@
}
.calendar td.disabled {
color: var(--gray400);
background: var(--gray75);
color: var(--base400);
background: var(--base75);
}
.calendar td.disabled:hover {
cursor: default;
background: var(--gray75);
background: var(--base75);
border-color: transparent;
}
.calendar td.faded.disabled {
background: var(--gray100);
background: var(--base100);
}
.header {
@ -61,7 +61,7 @@
align-items: center;
font-weight: 700;
line-height: 40px;
font-size: var(--font-size-normal);
font-size: var(--font-size-md);
}
.body {

View file

@ -11,7 +11,7 @@
align-items: center;
width: 20px;
height: 20px;
border: 1px solid var(--gray500);
border: 1px solid var(--base500);
border-radius: 4px;
}

View file

@ -1,5 +1,5 @@
.wrapper {
background: var(--gray50);
background: var(--base50);
margin-right: 10px;
border-radius: 100%;
}

View file

@ -3,7 +3,7 @@
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid var(--gray500);
border: 1px solid var(--base500);
border-radius: 4px;
cursor: pointer;
}
@ -12,7 +12,7 @@
flex: 1;
display: flex;
justify-content: space-between;
font-size: var(--font-size-small);
font-size: var(--font-size-sm);
flex-wrap: nowrap;
white-space: nowrap;
padding: 4px 16px;

View file

@ -6,7 +6,7 @@
margin: auto;
display: flex;
z-index: 1;
background-color: var(--gray50);
background-color: var(--base50);
padding: 10px;
}

View file

@ -4,11 +4,11 @@
}
.row .inactive {
color: var(--gray500);
color: var(--base500);
}
.row .active {
color: var(--gray900);
color: var(--base900);
font-weight: 600;
}

View file

@ -2,7 +2,7 @@ a.link,
a.link:active,
a.link:visited {
position: relative;
color: var(--gray900);
color: var(--base900);
text-decoration: none;
display: inline-flex;
align-items: center;
@ -17,15 +17,15 @@ a.link:hover span {
}
a.link.large {
font-size: var(--font-size-large);
font-size: var(--font-size-lg);
}
a.link.small {
font-size: var(--font-size-small);
font-size: var(--font-size-sm);
}
a.link.xsmall {
font-size: var(--font-size-xsmall);
font-size: var(--font-size-xs);
}
a.link .icon + * {

View file

@ -25,7 +25,7 @@
height: 100%;
width: 100%;
z-index: 10;
background: var(--gray400);
background: var(--base400);
opacity: 0.4;
}
@ -33,13 +33,13 @@
width: 10px;
height: 10px;
border-radius: 100%;
background: var(--gray400);
background: var(--base400);
animation: blink 1.4s infinite;
animation-fill-mode: both;
}
.loading.overlay div {
background: var(--gray900);
background: var(--base900);
}
.loading div + div {

View file

@ -1,22 +1,22 @@
.menu {
background: var(--gray50);
border: 1px solid var(--gray500);
background: var(--base50);
border: 1px solid var(--base500);
border-radius: 4px;
overflow: hidden;
z-index: 100;
}
.option {
font-size: var(--font-size-small);
font-size: var(--font-size-sm);
font-weight: normal;
background: var(--gray50);
background: var(--base50);
padding: 4px 16px;
cursor: pointer;
white-space: nowrap;
}
.option:hover {
background: var(--gray100);
background: var(--base100);
}
.float {
@ -43,7 +43,7 @@
}
.divider {
border-top: 1px solid var(--gray300);
border-top: 1px solid var(--base300);
}
.selected {

View file

@ -10,11 +10,11 @@
}
.text {
font-size: var(--font-size-small);
font-size: var(--font-size-sm);
}
.open,
.open:hover {
background: var(--gray50);
border: 1px solid var(--gray500);
background: var(--base50);
border: 1px solid var(--base500);
}

View file

@ -8,7 +8,7 @@
z-index: 100;
display: flex;
flex-direction: column;
background-color: var(--gray50);
background-color: var(--base50);
overflow: auto;
}
@ -21,7 +21,7 @@
}
.item {
font-size: var(--font-size-large);
font-size: var(--font-size-lg);
}
.item + .item {

View file

@ -25,12 +25,12 @@
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: var(--gray50);
background: var(--base50);
min-width: 400px;
min-height: 100px;
max-width: 100vw;
z-index: 1;
border: 1px solid var(--gray300);
border: 1px solid var(--base300);
padding: 30px;
border-radius: 4px;
}

View file

@ -1,6 +1,6 @@
.menu {
color: var(--gray800);
border: 1px solid var(--gray500);
color: var(--base800);
border: 1px solid var(--base500);
border-radius: 4px;
overflow: hidden;
z-index: 2;
@ -13,10 +13,10 @@
}
.option:hover {
background: var(--gray75);
background: var(--base75);
}
.selected {
color: var(--gray900);
color: var(--base900);
font-weight: 600;
}

View file

@ -1,6 +1,6 @@
.container {
color: var(--gray500);
font-size: var(--font-size-normal);
color: var(--base500);
font-size: var(--font-size-md);
position: relative;
display: flex;
align-items: center;

View file

@ -5,16 +5,16 @@
.table label {
display: none;
font-size: var(--font-size-xsmall);
font-size: var(--font-size-xs);
font-weight: bold;
}
.header {
border-bottom: 1px solid var(--gray300);
border-bottom: 1px solid var(--base300);
}
.head {
font-size: var(--font-size-small);
font-size: var(--font-size-sm);
font-weight: 600;
line-height: 40px;
}
@ -26,7 +26,7 @@
}
.row {
border-bottom: 1px solid var(--gray300);
border-bottom: 1px solid var(--base300);
padding: 10px 0;
}

View file

@ -1,6 +1,6 @@
.tag {
padding: 2px 4px;
border: 1px solid var(--gray300);
border: 1px solid var(--base300);
border-radius: 4px;
margin-right: 10px;
}

View file

@ -17,7 +17,7 @@
}
.message {
font-size: var(--font-size-normal);
font-size: var(--font-size-md);
}
.close {

View file

@ -6,7 +6,7 @@
}
.message {
font-size: var(--font-size-small);
font-size: var(--font-size-sm);
font-weight: 600;
flex: 1;
text-align: center;