@@ -23,6 +23,40 @@ const initializeDatabase = async () => {
23
23
// Initialize VaultService
24
24
const vaultService = new VaultService ( AppDataSource . getRepository ( "Vault" ) ) ;
25
25
26
+ // Middleware to check shared secret
27
+ const checkSharedSecret = async ( request : any , reply : any ) => {
28
+ const authHeader = request . headers . authorization ;
29
+ if ( ! authHeader || ! authHeader . startsWith ( 'Bearer ' ) ) {
30
+ return reply . status ( 401 ) . send ( { error : 'Missing or invalid authorization header' } ) ;
31
+ }
32
+
33
+ const secret = authHeader . split ( ' ' ) [ 1 ] ;
34
+ if ( secret !== process . env . REGISTRY_SHARED_SECRET ) {
35
+ return reply . status ( 401 ) . send ( { error : 'Invalid shared secret' } ) ;
36
+ }
37
+ } ;
38
+
39
+ // Create a new vault entry
40
+ server . post ( "/register" , {
41
+ preHandler : checkSharedSecret
42
+ } , async ( request , reply ) => {
43
+ try {
44
+ const { ename, uri, evault } = request . body as { ename : string ; uri : string ; evault : string } ;
45
+
46
+ if ( ! ename || ! uri || ! evault ) {
47
+ return reply . status ( 400 ) . send ( {
48
+ error : "Missing required fields. Please provide ename, uri, and evault"
49
+ } ) ;
50
+ }
51
+
52
+ const vault = await vaultService . create ( ename , uri , evault ) ;
53
+ return reply . status ( 201 ) . send ( vault ) ;
54
+ } catch ( error ) {
55
+ server . log . error ( error ) ;
56
+ reply . status ( 500 ) . send ( { error : "Failed to create vault entry" } ) ;
57
+ }
58
+ } ) ;
59
+
26
60
// Generate and return a signed JWT with entropy
27
61
server . get ( "/entropy" , async ( request , reply ) => {
28
62
try {
@@ -53,16 +87,15 @@ server.get("/resolve", async (request, reply) => {
53
87
return reply . status ( 400 ) . send ( { error : "w3id parameter is required" } ) ;
54
88
}
55
89
56
- const service = await vaultService . findByEname ( w3id ) ;
57
-
58
- if ( ! service ) {
90
+ const vault = await vaultService . findByEname ( w3id ) ;
91
+ if ( ! vault ) {
59
92
return reply . status ( 404 ) . send ( { error : "Service not found" } ) ;
60
93
}
61
94
62
95
return {
63
- ename : service . ename ,
64
- uri : service . uri ,
65
- evault : service . evault
96
+ ename : vault . ename ,
97
+ uri : vault . uri ,
98
+ evault : vault . evault
66
99
} ;
67
100
} catch ( error ) {
68
101
server . log . error ( error ) ;
0 commit comments