Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: date-formatting #22

Merged
merged 4 commits into from
Jan 31, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions api-gateway/src/routes/authentication.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ authenticationRouter.route("/2FA/Code/Login").post(async (req, res) => {
return res
.status(200)
.cookie("mb_refresh_token", response.data.refreshToken, {
sameSite: "none",
sameSite: process.env.NODE_ENV === "production" ? "none" : "lax",
secure: process.env.NODE_ENV === "production",
httpOnly: true,
expires: new Date(Date.now() + 18 * 60 * 60 * 1000),
Expand Down Expand Up @@ -114,10 +114,10 @@ authenticationRouter.route("/Login/Refresh").get(async (req, res) => {
authenticationRouter.route("/Logout").get(async (_, res) => {
return res
.cookie("mb_refresh_token", "expiring now", {
expires: new Date(Date.now()),
sameSite: "none",
sameSite: process.env.NODE_ENV === "production" ? "none" : "lax",
secure: process.env.NODE_ENV === "production",
httpOnly: true,
expires: new Date(Date.now()),
})
.json({ success: true });
});
Expand Down
17 changes: 14 additions & 3 deletions application-data-service/src/db/entities/Task.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import {
Entity,
PrimaryGeneratedColumn,
Column,
BaseEntity,
CreateDateColumn,
UpdateDateColumn,
VersionColumn,
} from "typeorm";

@Entity("tasks")
export default class Task extends BaseEntity {
Expand Down Expand Up @@ -29,9 +37,12 @@ export default class Task extends BaseEntity {
@Column("text", { name: "client_id" })
clientId: string;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;

@VersionColumn({ default: 1 })
version: number;
}
6 changes: 3 additions & 3 deletions application-data-service/src/db/entities/TaskShareMappings.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, CreateDateColumn, UpdateDateColumn } from "typeorm";

@Entity("task_share_mappings")
export default class TaskShareMapping extends BaseEntity {
Expand All @@ -14,9 +14,9 @@ export default class TaskShareMapping extends BaseEntity {
@Column("bool", { name: "is_active", default: true })
isActive: boolean;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;
}
17 changes: 14 additions & 3 deletions auth-service/src/db/entities/Client.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import {
Entity,
PrimaryGeneratedColumn,
Column,
BaseEntity,
CreateDateColumn,
UpdateDateColumn,
VersionColumn,
} from "typeorm";

@Entity("clients")
export default class Client extends BaseEntity {
Expand All @@ -14,9 +22,12 @@ export default class Client extends BaseEntity {
@Column("bool", { name: "is_active", default: true })
isActive: boolean;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;

@VersionColumn({ default: 1 })
version: number;
}
6 changes: 3 additions & 3 deletions auth-service/src/db/entities/EmailConfirmations.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, CreateDateColumn, UpdateDateColumn } from "typeorm";

type ConfirmationType = "account_confirmation" | "password_reset" | "lost_2fa_access";

Expand All @@ -19,9 +19,9 @@ export default class EmailConfirmations extends BaseEntity {
@Column({ type: "timestamp", default: () => "NOW() + INTERVAL '90 day'", name: "expires_at" })
expiresAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;
}
17 changes: 14 additions & 3 deletions auth-service/src/db/entities/Role.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import {
Entity,
PrimaryGeneratedColumn,
Column,
BaseEntity,
CreateDateColumn,
UpdateDateColumn,
VersionColumn,
} from "typeorm";

@Entity("roles")
export default class Role extends BaseEntity {
Expand All @@ -23,9 +31,12 @@ export default class Role extends BaseEntity {
@Column("bool", { name: "is_user_deletable", default: true })
isUserDeletable: boolean;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;

@VersionColumn({ default: 1 })
version: number;
}
6 changes: 3 additions & 3 deletions auth-service/src/db/entities/RoleMapping.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, CreateDateColumn, UpdateDateColumn } from "typeorm";

@Entity("role_mappings")
export default class RoleMapping extends BaseEntity {
Expand All @@ -11,9 +11,9 @@ export default class RoleMapping extends BaseEntity {
@Column("text", { name: "user_id" })
userId: string;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;
}
17 changes: 14 additions & 3 deletions auth-service/src/db/entities/Team.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import {
Entity,
PrimaryGeneratedColumn,
Column,
BaseEntity,
CreateDateColumn,
UpdateDateColumn,
VersionColumn,
} from "typeorm";

@Entity("teams")
export default class Team extends BaseEntity {
Expand All @@ -20,9 +28,12 @@ export default class Team extends BaseEntity {
@Column("bool", { name: "is_user_deletable", default: true })
isUserDeletable: boolean;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;

@VersionColumn({ default: 1 })
version: number;
}
6 changes: 3 additions & 3 deletions auth-service/src/db/entities/TeamMapping.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, CreateDateColumn, UpdateDateColumn } from "typeorm";

@Entity("team_mappings")
export default class TeamMapping extends BaseEntity {
Expand All @@ -11,9 +11,9 @@ export default class TeamMapping extends BaseEntity {
@Column("text", { name: "user_id" })
userId: string;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;
}
6 changes: 3 additions & 3 deletions auth-service/src/db/entities/TwoFactorAuthMapping.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, CreateDateColumn, UpdateDateColumn } from "typeorm";

@Entity("two_factor_auth_mappings")
export default class TwoFactorAuthMapping extends BaseEntity {
Expand All @@ -14,9 +14,9 @@ export default class TwoFactorAuthMapping extends BaseEntity {
@Column("text", { name: "is_temp", default: true })
is_temp: boolean;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;
}
17 changes: 14 additions & 3 deletions auth-service/src/db/entities/User.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import {
Entity,
PrimaryGeneratedColumn,
Column,
BaseEntity,
CreateDateColumn,
UpdateDateColumn,
VersionColumn,
} from "typeorm";

@Entity("users")
export default class User extends BaseEntity {
Expand Down Expand Up @@ -29,9 +37,12 @@ export default class User extends BaseEntity {
@Column("bool", { name: "is_email_confirmed", default: false })
isEmailConfirmed: boolean;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", name: "created_at" })
@CreateDateColumn({ name: "created_at" })
createdAt: Date;

@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", onUpdate: "CURRENT_TIMESTAMP", name: "updated_at" })
@UpdateDateColumn({ name: "updated_at" })
updatedAt: Date;

@VersionColumn({ default: 1 })
version: number;
}
2 changes: 2 additions & 0 deletions web-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@
"jwt-decode": "^3.1.2",
"markdown-draft-js": "^2.4.0",
"moment": "^2.29.1",
"moment-timezone": "^0.5.34",
"notistack": "^2.0.3",
"qrcode.react": "^1.0.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-moment": "^1.1.1",
"react-query": "^3.34.5",
"react-redux": "^7.2.6",
"react-router-dom": "^6.2.1",
Expand Down
5 changes: 3 additions & 2 deletions web-client/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ import { QueryClient, QueryClientProvider } from "react-query";
import { ReactQueryDevtools } from "react-query/devtools";
import { SnackbarProvider } from "notistack";
import { useDispatch, useSelector } from "react-redux";
import "moment-timezone";

import DateAdapter from "@mui/lab/AdapterMoment";
import Backdrop from "@mui/material/Backdrop";
import CircularProgress from "@mui/material/CircularProgress";
import LocalizationProvider from "@mui/lab/LocalizationProvider";

import AppRoutes from "./routes/Routes";

Expand All @@ -16,7 +18,6 @@ import { selectAppProfileState, selectAuthState, selectLookupListsState } from "
import { getProfilesThunk } from "./shared/redux/slices/user/thunks";
import { getRefreshedAccessTokenThunk } from "./shared/redux/slices/auth/thunks";
import { getAllLookupListsThunk } from "./shared/redux/slices/lookup/thunks";
import LocalizationProvider from "@mui/lab/LocalizationProvider";

const queryClient = new QueryClient();

Expand Down Expand Up @@ -71,7 +72,7 @@ const App = () => {
<AppRoutes />
</SnackbarProvider>
</LocalizationProvider>
{process.env.NODE_ENV === "production" && <ReactQueryDevtools initialIsOpen={false} />}
{process.env.NODE_ENV !== "production" && <ReactQueryDevtools initialIsOpen={false} />}
{/** only show devtools in development */}
</QueryClientProvider>
</ThemeWrapper>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import React from "react";
import Moment from "react-moment";
import { useSelector } from "react-redux";

import { styled } from "@mui/material/styles";
import Table from "@mui/material/Table";
Expand All @@ -16,6 +18,7 @@ import StyledTableCell from "../../../../shared/components/StyledTableCell/Style

import { IRoleProfile } from "../../../../shared/interfaces/Client.interfaces";
import { usePermission } from "../../../../shared/hooks/usePermission";
import { selectAppProfileState } from "../../../../shared/redux/store";

const StyledTableRow = styled(TableRow)(({ theme }) => ({
"&:nth-of-type(odd)": {
Expand All @@ -36,6 +39,9 @@ interface ITableProps {
const ViewTable = ({ dataList, editItemHandler, deleteItemHandler }: ITableProps) => {
const isDeleteAccessible = usePermission("role:admin");
const isEditAccessible = usePermission("role:admin");

const { formats } = useSelector(selectAppProfileState);

const handleEditButton = (role: IRoleProfile) => {
editItemHandler(role.roleId);
};
Expand All @@ -49,7 +55,7 @@ const ViewTable = ({ dataList, editItemHandler, deleteItemHandler }: ITableProps
<TableRow>
<StyledTableCell>Name</StyledTableCell>
<StyledTableCell width={300}>Created by</StyledTableCell>
<StyledTableCell width={300}>Updated At</StyledTableCell>
<StyledTableCell width={300}>Last updated</StyledTableCell>
<StyledTableCell align="right">#</StyledTableCell>
</TableRow>
</TableHead>
Expand All @@ -66,7 +72,11 @@ const ViewTable = ({ dataList, editItemHandler, deleteItemHandler }: ITableProps
<Chip label="System generated" />
)}
</StyledTableCell>
<StyledTableCell>{role.updatedAt}</StyledTableCell>
<StyledTableCell>
<Moment interval={formats.defaultDateRefreshInterval} fromNow>
{role.updatedAt}
</Moment>
</StyledTableCell>
<StyledTableCell align="right">
{role.isUserDeletable && isDeleteAccessible && (
<>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import React from "react";
import Moment from "react-moment";
import { useSelector } from "react-redux";

import { styled } from "@mui/material/styles";
import Table from "@mui/material/Table";
Expand All @@ -16,6 +18,7 @@ import StyledTableCell from "../../../../shared/components/StyledTableCell/Style

import { ITeamProfile } from "../../../../shared/interfaces/Client.interfaces";
import { usePermission } from "../../../../shared/hooks/usePermission";
import { selectAppProfileState } from "../../../../shared/redux/store";

const StyledTableRow = styled(TableRow)(({ theme }) => ({
"&:nth-of-type(odd)": {
Expand All @@ -37,6 +40,8 @@ const ViewTable = ({ dataList, editItemHandler, deleteItemHandler }: ITableProps
const isEditButtonAccessible = usePermission("team:admin");
const isDeleteButtonAccessible = usePermission("team:admin");

const { formats } = useSelector(selectAppProfileState);

const handleEditButton = (team: ITeamProfile) => {
editItemHandler(team.teamId);
};
Expand All @@ -50,7 +55,7 @@ const ViewTable = ({ dataList, editItemHandler, deleteItemHandler }: ITableProps
<TableRow>
<StyledTableCell>Name</StyledTableCell>
<StyledTableCell width={300}>Created by</StyledTableCell>
<StyledTableCell width={300}>Updated At</StyledTableCell>
<StyledTableCell width={300}>Last updated</StyledTableCell>
<StyledTableCell align="right">#</StyledTableCell>
</TableRow>
</TableHead>
Expand All @@ -67,7 +72,11 @@ const ViewTable = ({ dataList, editItemHandler, deleteItemHandler }: ITableProps
<Chip label="System generated" />
)}
</StyledTableCell>
<StyledTableCell>{team.updatedAt}</StyledTableCell>
<StyledTableCell>
<Moment interval={formats.defaultDateRefreshInterval} fromNow>
{team.updatedAt}
</Moment>
</StyledTableCell>
<StyledTableCell align="right">
{team.isUserDeletable && isDeleteButtonAccessible && (
<>
Expand Down
Loading