@@ -12,6 +12,7 @@ import {
12
12
authAdminProcedure ,
13
13
} from '../server.js' ;
14
14
import { ACCESS_TOKEN_NAME } from '../constants.js' ;
15
+ import { z } from 'zod' ;
15
16
import { createLogger } from '@windingtree/sdk-logger' ;
16
17
17
18
const logger = createLogger ( 'UserRouter' ) ;
@@ -43,7 +44,7 @@ export const userRouter = router({
43
44
44
45
/**
45
46
* List users records.
46
- * Throws an error if the user already exists .
47
+ * Allowed for admins only .
47
48
*/
48
49
list : authAdminProcedure
49
50
. output ( UsersListOutputSchema )
@@ -65,6 +66,28 @@ export const userRouter = router({
65
66
}
66
67
} ) ,
67
68
69
+ /**
70
+ * Deletes user by login name.
71
+ * Allowed for admins only.
72
+ */
73
+ deleteByLogin : authAdminProcedure
74
+ . input ( z . string ( ) )
75
+ . mutation ( async ( { input, ctx } ) => {
76
+ try {
77
+ const { users } = ctx ;
78
+ const user = await users . get ( input ) ;
79
+ logger . trace ( `Found #${ user . login } user` ) ;
80
+ await users . delete ( user . login ) ;
81
+ logger . trace ( `User ${ user . login } has been deleted` ) ;
82
+ } catch ( error ) {
83
+ logger . error ( 'user.deleteByLogin' , error ) ;
84
+ throw new TRPCError ( {
85
+ code : 'BAD_REQUEST' ,
86
+ message : ( error as Error ) . message ,
87
+ } ) ;
88
+ }
89
+ } ) ,
90
+
68
91
/**
69
92
* Log in an existing user.
70
93
* If successful, generates a new access token and sends it in the response.
0 commit comments