mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-05 08:26:29 +00:00
Merge branch 'main' of https://github.com/Infisical/infisical
This commit is contained in:
Generated
+1361
-787
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,15 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-secrets-manager": "^3.287.0",
|
"@aws-sdk/client-secrets-manager": "^3.294.0",
|
||||||
"@godaddy/terminus": "^4.11.2",
|
"@godaddy/terminus": "^4.11.2",
|
||||||
"@octokit/rest": "^19.0.5",
|
"@octokit/rest": "^19.0.5",
|
||||||
|
"@sentry/tracing": "^7.41.0",
|
||||||
"@sentry/node": "^7.40.0",
|
"@sentry/node": "^7.40.0",
|
||||||
"@sentry/tracing": "^7.39.0",
|
"@sentry/node": "^7.41.0",
|
||||||
"@types/crypto-js": "^4.1.1",
|
"@types/crypto-js": "^4.1.1",
|
||||||
"@types/libsodium-wrappers": "^0.7.10",
|
"@types/libsodium-wrappers": "^0.7.10",
|
||||||
"await-to-js": "^3.0.0",
|
"await-to-js": "^3.0.0",
|
||||||
"aws-sdk": "^2.1331.0",
|
"aws-sdk": "^2.1338.0",
|
||||||
"axios": "^1.1.3",
|
"axios": "^1.1.3",
|
||||||
"axios-retry": "^3.4.0",
|
"axios-retry": "^3.4.0",
|
||||||
"bcrypt": "^5.1.0",
|
"bcrypt": "^5.1.0",
|
||||||
@@ -31,7 +32,7 @@
|
|||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"mongoose": "^6.10.3",
|
"mongoose": "^6.10.3",
|
||||||
"nodemailer": "^6.8.0",
|
"nodemailer": "^6.8.0",
|
||||||
"posthog-node": "^2.5.4",
|
"posthog-node": "^2.6.0",
|
||||||
"query-string": "^7.1.3",
|
"query-string": "^7.1.3",
|
||||||
"request-ip": "^3.3.0",
|
"request-ip": "^3.3.0",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
|
|||||||
@@ -75,8 +75,11 @@ export const createServiceTokenData = async (req: Request, res: Response) => {
|
|||||||
const secret = crypto.randomBytes(16).toString('hex');
|
const secret = crypto.randomBytes(16).toString('hex');
|
||||||
const secretHash = await bcrypt.hash(secret, getSaltRounds());
|
const secretHash = await bcrypt.hash(secret, getSaltRounds());
|
||||||
|
|
||||||
const expiresAt = new Date();
|
let expiresAt;
|
||||||
expiresAt.setSeconds(expiresAt.getSeconds() + expiresIn);
|
if (!!expiresIn) {
|
||||||
|
expiresAt = new Date()
|
||||||
|
expiresAt.setSeconds(expiresAt.getSeconds() + expiresIn);
|
||||||
|
}
|
||||||
|
|
||||||
let user, serviceAccount;
|
let user, serviceAccount;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
import React, { useState } from 'react'
|
import React from 'react'
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { faXmark } from '@fortawesome/free-solid-svg-icons';
|
import { faXmark } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||||
|
|
||||||
import Button from '../basic/buttons/Button';
|
import Button from '../basic/buttons/Button';
|
||||||
import { DeleteEnvVar } from '../basic/dialog/DeleteEnvVar';
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
onSubmit: () => void;
|
onSubmit: () => void;
|
||||||
@@ -13,7 +12,6 @@ type Props = {
|
|||||||
|
|
||||||
export const DeleteActionButton = ({ onSubmit, isPlain }: Props) => {
|
export const DeleteActionButton = ({ onSubmit, isPlain }: Props) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const [open, setOpen] = useState(false)
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={`${
|
<div className={`${
|
||||||
@@ -25,25 +23,17 @@ export const DeleteActionButton = ({ onSubmit, isPlain }: Props) => {
|
|||||||
onKeyDown={() => null}
|
onKeyDown={() => null}
|
||||||
role="button"
|
role="button"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
onClick={() => setOpen(true)}
|
onClick={onSubmit}
|
||||||
className="invisible group-hover:visible"
|
className="invisible group-hover:visible"
|
||||||
>
|
>
|
||||||
<FontAwesomeIcon className="text-bunker-300 hover:text-red pl-2 pr-6 text-lg mt-0.5" icon={faXmark} />
|
<FontAwesomeIcon className="text-bunker-300 hover:text-red pl-2 pr-6 text-lg mt-0.5" icon={faXmark} />
|
||||||
</div>
|
</div>
|
||||||
: <Button
|
: <Button
|
||||||
text={String(t("Delete"))}
|
text={String(t("Delete"))}
|
||||||
// onButtonPressed={onSubmit}
|
|
||||||
color="red"
|
color="red"
|
||||||
size="md"
|
size="md"
|
||||||
onButtonPressed={() => setOpen(true)}
|
onButtonPressed={onSubmit}
|
||||||
/>}
|
/>}
|
||||||
<DeleteEnvVar
|
|
||||||
isOpen={open}
|
|
||||||
onClose={() => {
|
|
||||||
setOpen(false)
|
|
||||||
}}
|
|
||||||
onSubmit={onSubmit}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-4
@@ -37,13 +37,14 @@ const apiTokenExpiry = [
|
|||||||
{ label: '7 Days', value: 604800 },
|
{ label: '7 Days', value: 604800 },
|
||||||
{ label: '1 Month', value: 2592000 },
|
{ label: '1 Month', value: 2592000 },
|
||||||
{ label: '6 months', value: 15552000 },
|
{ label: '6 months', value: 15552000 },
|
||||||
{ label: '12 months', value: 31104000 }
|
{ label: '12 months', value: 31104000 },
|
||||||
|
{ label: 'Never', value: null },
|
||||||
];
|
];
|
||||||
|
|
||||||
const createServiceTokenSchema = yup.object({
|
const createServiceTokenSchema = yup.object({
|
||||||
name: yup.string().required().label('Service Token Name'),
|
name: yup.string().required().label('Service Token Name'),
|
||||||
environment: yup.string().required().label('Environment'),
|
environment: yup.string().required().label('Environment'),
|
||||||
expiresIn: yup.string().required().label('Service Token Expiration'),
|
expiresIn: yup.string().optional().label('Service Token Expiration'),
|
||||||
permissions: yup.object().shape({
|
permissions: yup.object().shape({
|
||||||
read: yup.boolean().required(),
|
read: yup.boolean().required(),
|
||||||
write: yup.boolean().required()
|
write: yup.boolean().required()
|
||||||
@@ -213,7 +214,7 @@ export const ServiceTokenSection = ({
|
|||||||
className="w-full"
|
className="w-full"
|
||||||
>
|
>
|
||||||
{apiTokenExpiry.map(({ label, value }) => (
|
{apiTokenExpiry.map(({ label, value }) => (
|
||||||
<SelectItem value={String(value)} key={label}>
|
<SelectItem value={String(value || '')} key={label}>
|
||||||
{label}
|
{label}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
@@ -332,7 +333,7 @@ export const ServiceTokenSection = ({
|
|||||||
<Tr key={row._id}>
|
<Tr key={row._id}>
|
||||||
<Td>{row.name}</Td>
|
<Td>{row.name}</Td>
|
||||||
<Td>{row.environment}</Td>
|
<Td>{row.environment}</Td>
|
||||||
<Td>{new Date(row.expiresAt).toUTCString()}</Td>
|
<Td>{row.expiresAt && new Date(row.expiresAt).toUTCString()}</Td>
|
||||||
<Td className="flex items-center justify-end">
|
<Td className="flex items-center justify-end">
|
||||||
<IconButton
|
<IconButton
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
|
|||||||
Reference in New Issue
Block a user