Skip to content

Commit 7edf172

Browse files
committed
feat: 🎸 Added user delete feature to the manager app example
1 parent 1206742 commit 7edf172

File tree

2 files changed

+43
-6
lines changed

2 files changed

+43
-6
lines changed

‎examples/manager/src/components/LoginWidget.tsx

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ export const LoginWidget = () => {
5353
login: name,
5454
password: sign,
5555
});
56-
}, [node, name, handleSignature]);
56+
setAuth(name);
57+
}, [node, name, handleSignature, setAuth]);
5758

5859
const handleAdminLogin = useCallback(async () => {
5960
if (!node) {
@@ -64,7 +65,8 @@ export const LoginWidget = () => {
6465
login: name,
6566
password: await handleSignature(),
6667
});
67-
}, [node, name, handleSignature]);
68+
setAuth(name);
69+
}, [node, name, setAuth, handleSignature]);
6870

6971
const handleLogout = useCallback(async () => {
7072
try {
@@ -83,6 +85,23 @@ export const LoginWidget = () => {
8385
}
8486
}, [node, resetAuth]);
8587

88+
const handleDelete = useCallback(async () => {
89+
try {
90+
setError(undefined);
91+
setMessage(undefined);
92+
93+
if (!node) {
94+
throw new Error('Not connected to the Node');
95+
}
96+
97+
await node.user.delete.mutate();
98+
resetAuth();
99+
} catch (error) {
100+
console.log(error);
101+
setError((error as Error).message || 'Unknown user delete error');
102+
}
103+
}, [node, resetAuth]);
104+
86105
const handleAdminAction = useCallback(async () => {
87106
try {
88107
setError(undefined);
@@ -97,11 +116,9 @@ export const LoginWidget = () => {
97116
await handleAdminRegister();
98117
setAdminAction('login');
99118
setMessage(`Admin "${name}" successfully registered. Please log in.`);
100-
setAuth(name);
101119
break;
102120
case 'login':
103121
await handleAdminLogin();
104-
setAuth(name);
105122
break;
106123
default:
107124
throw new Error('Unknown admin action');
@@ -110,7 +127,7 @@ export const LoginWidget = () => {
110127
console.log(error);
111128
setError((error as Error).message || 'Unknown login error');
112129
}
113-
}, [node, adminAction, name, handleAdminRegister, setAuth, handleAdminLogin]);
130+
}, [node, adminAction, name, handleAdminRegister, handleAdminLogin]);
114131

115132
return (
116133
<>
@@ -170,6 +187,14 @@ export const LoginWidget = () => {
170187
</form>
171188
</div>
172189
)}
190+
{isAuth &&
191+
<div>
192+
<div>Delete user</div>
193+
<div>
194+
<button onClick={handleDelete}>Delete</button>
195+
</div>
196+
</div>
197+
}
173198
</TabPanel>
174199
<TabPanel id={1} activeTab={selectedTab}>
175200
{!isConnected && <div>Please connect your wallet first</div>}
@@ -210,6 +235,14 @@ export const LoginWidget = () => {
210235
</div>
211236
</div>
212237
)}
238+
{isAuth &&
239+
<div>
240+
<div>Delete user</div>
241+
<div>
242+
<button onClick={handleDelete}>Delete</button>
243+
</div>
244+
</div>
245+
}
213246
</TabPanel>
214247

215248
{message && <div style={{ marginTop: 20 }}>✅ {message}</div>}

‎src/node/api/router/user.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,12 @@ export const userRouter = router({
100100
*/
101101
delete: authProcedure.mutation(async ({ ctx }) => {
102102
try {
103-
const { user, users } = ctx;
103+
const { user, users, res } = ctx;
104104
await users.delete(user.login);
105+
res.setHeader(
106+
'Set-Cookie',
107+
`${ACCESS_TOKEN_NAME}=deleted; expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly`,
108+
);
105109
logger.trace(`User ${user.login} deleted`);
106110
} catch (error) {
107111
logger.error('user.delete', error);

0 commit comments

Comments
 (0)