mirror of
https://github.com/freedbygrace/DynamoDNS.git
synced 2026-07-27 20:08:56 +00:00
Improve API token management by adding customer access control.
Replit-Commit-Author: Agent Replit-Commit-Session-Id: 9111ef36-26c8-4085-84ca-a35dc1fec1b5 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/7083d608-d6d3-4a6a-9a27-6286c5109627/19261c9e-f1ea-40d4-82c2-25bd04d73b3c.jpg
This commit is contained in:
+41
-2
@@ -264,7 +264,6 @@ export class MemStorage implements IStorage {
|
||||
email: user.email,
|
||||
fullName: user.fullName || null,
|
||||
role: user.role || 'user',
|
||||
organizationId: user.organizationId || null,
|
||||
createdAt
|
||||
};
|
||||
this.usersMap.set(numId, newUser);
|
||||
@@ -625,7 +624,47 @@ export class MemStorage implements IStorage {
|
||||
}
|
||||
|
||||
async deleteApiToken(id: string): Promise<boolean> {
|
||||
return this.apiTokensMap.delete(parseInt(id));
|
||||
// First, remove all customer access entries for this token
|
||||
const numId = parseInt(id);
|
||||
const accessEntries = Array.from(this.apiTokenCustomerAccessMap.values())
|
||||
.filter(access => access.tokenId === id);
|
||||
|
||||
for (const access of accessEntries) {
|
||||
this.apiTokenCustomerAccessMap.delete(parseInt(access.id));
|
||||
}
|
||||
|
||||
// Then delete the token itself
|
||||
return this.apiTokensMap.delete(numId);
|
||||
}
|
||||
|
||||
// API token customer access management
|
||||
async getApiTokenCustomerAccess(tokenId: string): Promise<ApiTokenCustomerAccess[]> {
|
||||
return Array.from(this.apiTokenCustomerAccessMap.values())
|
||||
.filter(access => access.tokenId === tokenId);
|
||||
}
|
||||
|
||||
async addApiTokenCustomerAccess(access: InsertApiTokenCustomerAccess): Promise<ApiTokenCustomerAccess> {
|
||||
const numId = this.apiTokenCustomerAccessIdCounter++;
|
||||
const createdAt = new Date();
|
||||
|
||||
const newAccess: ApiTokenCustomerAccess = {
|
||||
id: numId.toString(),
|
||||
tokenId: access.tokenId,
|
||||
customerId: access.customerId,
|
||||
createdAt
|
||||
};
|
||||
|
||||
this.apiTokenCustomerAccessMap.set(numId, newAccess);
|
||||
return newAccess;
|
||||
}
|
||||
|
||||
async removeApiTokenCustomerAccess(tokenId: string, customerId: string): Promise<boolean> {
|
||||
const access = Array.from(this.apiTokenCustomerAccessMap.values())
|
||||
.find(a => a.tokenId === tokenId && a.customerId === customerId);
|
||||
|
||||
if (!access) return false;
|
||||
|
||||
return this.apiTokenCustomerAccessMap.delete(parseInt(access.id));
|
||||
}
|
||||
|
||||
// DNS History
|
||||
|
||||
Reference in New Issue
Block a user