Compare commits

..

No commits in common. "3f6ac9a021f6b7871bcd124003edc518e248664a" and "4d3d37eaedde1116ffe8fdb54b626b8e239761c5" have entirely different histories.

12 changed files with 7 additions and 94 deletions

View File

@ -26,14 +26,14 @@ func SSEAuth(next http.Handler) http.Handler {
return return
} }
if claims == nil { if claims != nil {
h.ResultErrorJSON(w, r, http.StatusUnauthorized, "Unauthorised", nil) h.ResultErrorJSON(w, r, http.StatusUnauthorized, "Unauthorised", nil)
return return
} }
userID := uint(claims["uid"].(float64)) userID := uint(claims["uid"].(float64))
_, enabled, _ := user.IsEnabled(userID) _, enabled, _ := user.IsEnabled(userID)
if !enabled { if token == nil || !enabled {
h.ResultErrorJSON(w, r, http.StatusUnauthorized, "Unauthorised", nil) h.ResultErrorJSON(w, r, http.StatusUnauthorized, "Unauthorised", nil)
return return
} }

View File

@ -12,7 +12,6 @@ import (
func GetByID(id uint) (Model, error) { func GetByID(id uint) (Model, error) {
var m Model var m Model
err := m.LoadByID(id) err := m.LoadByID(id)
m.generateGravatar()
return m, err return m, err
} }

View File

@ -99,21 +99,3 @@ export async function put(
const response = await fetch(apiUrl, { method, headers, body, signal }); const response = await fetch(apiUrl, { method, headers, body, signal });
return processResponse(response, skipCamelize); return processResponse(response, skipCamelize);
} }
interface DeleteArgs {
url: string;
}
export async function del(
{ url }: DeleteArgs,
abortController?: AbortController,
) {
const apiUrl = buildUrl({ url });
const method = "DELETE";
const headers = {
...buildAuthHeader(),
[contentTypeHeader]: "application/json",
};
const signal = abortController?.signal;
const response = await fetch(apiUrl, { method, headers, signal });
return processResponse(response);
}

View File

@ -1,14 +0,0 @@
import * as api from "./base";
export async function deleteCertificate(
id: number,
abortController?: AbortController,
): Promise<boolean> {
const { result } = await api.del(
{
url: `/certificates/${id}`,
},
abortController,
);
return result;
}

View File

@ -2,7 +2,6 @@ export * from "./createCertificate";
export * from "./createCertificateAuthority"; export * from "./createCertificateAuthority";
export * from "./createDNSProvider"; export * from "./createDNSProvider";
export * from "./createUser"; export * from "./createUser";
export * from "./deleteCertificate";
export * from "./getAccessLists"; export * from "./getAccessLists";
export * from "./getCertificate"; export * from "./getCertificate";
export * from "./getCertificateAuthorities"; export * from "./getCertificateAuthorities";

View File

@ -26,7 +26,6 @@ function SiteWrapper({ children }: Props) {
eventSource.onmessage = (e: any) => { eventSource.onmessage = (e: any) => {
const j: SSEMessage = JSON.parse(e.data); const j: SSEMessage = JSON.parse(e.data);
if (j) { if (j) {
console.log("SSE Message:", j);
if (j.affects) { if (j.affects) {
queryClient.invalidateQueries({ queryKey: [j.affects] }); queryClient.invalidateQueries({ queryKey: [j.affects] });
} }

View File

@ -71,9 +71,6 @@
"certificate.create": { "certificate.create": {
"defaultMessage": "Zertifikat erstellen" "defaultMessage": "Zertifikat erstellen"
}, },
"certificate.deleted": {
"defaultMessage": "Certificate has been deleted"
},
"certificate.renewal-requested": { "certificate.renewal-requested": {
"defaultMessage": "Renewal has been queued" "defaultMessage": "Renewal has been queued"
}, },

View File

@ -347,9 +347,6 @@
"certificate.create": { "certificate.create": {
"defaultMessage": "Create Certificate" "defaultMessage": "Create Certificate"
}, },
"certificate.deleted": {
"defaultMessage": "Certificate has been deleted"
},
"certificate.renewal-requested": { "certificate.renewal-requested": {
"defaultMessage": "Renewal has been queued" "defaultMessage": "Renewal has been queued"
}, },

View File

@ -71,9 +71,6 @@
"certificate.create": { "certificate.create": {
"defaultMessage": "ایجاد گواهی" "defaultMessage": "ایجاد گواهی"
}, },
"certificate.deleted": {
"defaultMessage": "Certificate has been deleted"
},
"certificate.renewal-requested": { "certificate.renewal-requested": {
"defaultMessage": "Renewal has been queued" "defaultMessage": "Renewal has been queued"
}, },

View File

@ -8,7 +8,6 @@ import {
ActionsFormatter, ActionsFormatter,
CertificateStatusFormatter, CertificateStatusFormatter,
CertificateTypeFormatter, CertificateTypeFormatter,
DomainsFormatter,
GravatarFormatter, GravatarFormatter,
IDFormatter, IDFormatter,
MonospaceFormatter, MonospaceFormatter,
@ -28,7 +27,6 @@ export interface TableProps {
filters: TableFilter[]; filters: TableFilter[];
onTableEvent: any; onTableEvent: any;
onRenewal: (id: number) => void; onRenewal: (id: number) => void;
onDelete: (id: number) => void;
} }
function Table({ function Table({
data, data,
@ -37,7 +35,6 @@ function Table({
sortBy, sortBy,
filters, filters,
onRenewal, onRenewal,
onDelete,
}: TableProps) { }: TableProps) {
const [editId, setEditId] = useState(0); const [editId, setEditId] = useState(0);
const [columns, tableData] = useMemo(() => { const [columns, tableData] = useMemo(() => {
@ -62,14 +59,7 @@ function Table({
Cell: MonospaceFormatter(), Cell: MonospaceFormatter(),
}, },
{ {
Header: intl.formatMessage({ id: "column.domain-names" }), Header: intl.formatMessage({ id: "column.validation-type" }),
accessor: "domainNames",
sortable: true,
Filter: TextFilter,
Cell: DomainsFormatter(),
},
{
Header: intl.formatMessage({ id: "column.type" }),
accessor: "type", accessor: "type",
sortable: true, sortable: true,
Cell: CertificateTypeFormatter(), Cell: CertificateTypeFormatter(),
@ -115,7 +105,7 @@ function Table({
title: intl.formatMessage({ title: intl.formatMessage({
id: "action.delete", id: "action.delete",
}), }),
onClick: (_: any, { id }: any) => onDelete(id), onClick: (_: any, { id }: any) => alert(id),
icon: <FiTrash2 />, icon: <FiTrash2 />,
disabled: (data: any) => data.isReadonly, disabled: (data: any) => data.isReadonly,
}, },

View File

@ -3,7 +3,7 @@ import { useEffect, useReducer, useState } from "react";
import { Alert, AlertIcon, useToast } from "@chakra-ui/react"; import { Alert, AlertIcon, useToast } from "@chakra-ui/react";
import { useQueryClient } from "@tanstack/react-query"; import { useQueryClient } from "@tanstack/react-query";
import { renewCertificate, deleteCertificate } from "src/api/npm"; import { renewCertificate } from "src/api/npm";
import { EmptyList, SpinnerPage, tableEventReducer } from "src/components"; import { EmptyList, SpinnerPage, tableEventReducer } from "src/components";
import { useCertificates } from "src/hooks"; import { useCertificates } from "src/hooks";
import { intl } from "src/locale"; import { intl } from "src/locale";
@ -68,32 +68,6 @@ function TableWrapper() {
} }
}; };
const deleteCert = async (id: number) => {
try {
await deleteCertificate(id);
toast({
description: intl.formatMessage({
id: `certificate.deleted`,
}),
status: "success",
position: "top",
duration: 3000,
isClosable: true,
});
setTimeout(() => {
queryClient.invalidateQueries({ queryKey: ["certificates"] });
}, 500);
} catch (err: any) {
toast({
description: err.message,
status: "error",
position: "top",
duration: 3000,
isClosable: true,
});
}
};
if (isFetching || isLoading || !tableData) { if (isFetching || isLoading || !tableData) {
return <SpinnerPage />; return <SpinnerPage />;
} }
@ -131,7 +105,6 @@ function TableWrapper() {
filters={filters} filters={filters}
onTableEvent={dispatch} onTableEvent={dispatch}
onRenewal={renewCert} onRenewal={renewCert}
onDelete={deleteCert}
/> />
); );
} }

View File

@ -37,14 +37,11 @@ describe('Certificates endpoints', () => {
it('Should be able to get a certificate', function() { it('Should be able to get a certificate', function() {
cy.task('backendApiGet', { cy.task('backendApiGet', {
token: token, token: token,
path: '/api/certificates/' + certID + '?expand=user' path: '/api/certificates/' + certID
}).then((data) => { }).then((data) => {
// Check the swagger schema: // Check the swagger schema:
cy.validateSwaggerSchema('get', 200, '/certificates/{certificateID}', data); cy.validateSwaggerSchema('get', 200, '/certificates/{certificateID}', data);
expect(data.result).to.have.property('id', certID); expect(data.result).to.have.property('id', certID);
expect(data.result).to.have.property('user');
expect(data.result.user).to.have.property('gravatar_url');
expect(data.result.user.gravatar_url).to.include('gravatar.com');
}); });
}); });
@ -66,15 +63,12 @@ describe('Certificates endpoints', () => {
it('Should be able to get all certificates', function() { it('Should be able to get all certificates', function() {
cy.task('backendApiGet', { cy.task('backendApiGet', {
token: token, token: token,
path: '/api/certificates?expand=user' path: '/api/certificates'
}).then((data) => { }).then((data) => {
cy.validateSwaggerSchema('get', 200, '/certificates', data); cy.validateSwaggerSchema('get', 200, '/certificates', data);
expect(data).to.have.property('result'); expect(data).to.have.property('result');
expect(data.result).to.have.property('items'); expect(data.result).to.have.property('items');
expect(data.result.items.length).to.be.greaterThan(0); expect(data.result.items.length).to.be.greaterThan(0);
expect(data.result.items[0]).to.have.property('user');
expect(data.result.items[0].user).to.have.property('gravatar_url');
expect(data.result.items[0].user.gravatar_url).to.include('gravatar.com');
}); });
}); });