refactor: Completed final cleanup and resolved local changes before push
@@ -55,21 +55,21 @@ export const KNOWN_TOKENS: Record<number, TokenInfo> = {
|
||||
symbol: 'wHEZ',
|
||||
name: 'Wrapped HEZ',
|
||||
decimals: 12,
|
||||
logo: '🟡',
|
||||
logo: '/shared/images/hez_logo.png',
|
||||
},
|
||||
1: {
|
||||
id: 1,
|
||||
symbol: 'PEZ',
|
||||
name: 'Pezkuwi Token',
|
||||
decimals: 12,
|
||||
logo: '🟣',
|
||||
logo: '/shared/images/pez_logo.jpg',
|
||||
},
|
||||
2: {
|
||||
id: 2,
|
||||
1000: {
|
||||
id: 1000,
|
||||
symbol: 'wUSDT',
|
||||
name: 'Wrapped USDT',
|
||||
decimals: 6,
|
||||
logo: '💵',
|
||||
logo: '/shared/images/USDT(hez)logo.png',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
@@ -3,18 +3,29 @@
|
||||
* Security-critical: Founder wallet detection and permissions
|
||||
*/
|
||||
|
||||
// SECURITY: Founder wallet address for beta testnet
|
||||
// This address has sudo rights and can perform privileged operations
|
||||
export const FOUNDER_ADDRESS = '5GgTgG9sRmPQAYU1RsTejZYnZRjwzKZKWD3awtuqjHioki45';
|
||||
// DEPRECATED: Hardcoded founder address (kept for fallback only)
|
||||
// Modern approach: Fetch sudo key dynamically from blockchain
|
||||
export const FOUNDER_ADDRESS_FALLBACK = '5GgTgG9sRmPQAYU1RsTejZYnZRjwzKZKWD3awtuqjHioki45';
|
||||
|
||||
/**
|
||||
* Check if given address is the founder wallet
|
||||
* Check if given address is the sudo account (admin/founder)
|
||||
* @param address - Substrate address to check
|
||||
* @returns true if address matches founder, false otherwise
|
||||
* @param sudoKey - Sudo key fetched from blockchain (if available)
|
||||
* @returns true if address matches sudo key or fallback founder address
|
||||
*/
|
||||
export const isFounderWallet = (address: string | null | undefined): boolean => {
|
||||
export const isFounderWallet = (
|
||||
address: string | null | undefined,
|
||||
sudoKey?: string | null
|
||||
): boolean => {
|
||||
if (!address) return false;
|
||||
return address === FOUNDER_ADDRESS;
|
||||
|
||||
// Priority 1: Use dynamic sudo key from blockchain if available
|
||||
if (sudoKey && sudoKey !== '') {
|
||||
return address === sudoKey;
|
||||
}
|
||||
|
||||
// Priority 2: Fallback to hardcoded founder address (for compatibility)
|
||||
return address === FOUNDER_ADDRESS_FALLBACK;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -48,11 +59,13 @@ export enum DexPermission {
|
||||
* Check if user has permission for a specific DEX operation
|
||||
* @param address - User's wallet address
|
||||
* @param permission - Required permission level
|
||||
* @param sudoKey - Sudo key fetched from blockchain (if available)
|
||||
* @returns true if user has permission
|
||||
*/
|
||||
export const hasPermission = (
|
||||
address: string | null | undefined,
|
||||
permission: DexPermission
|
||||
permission: DexPermission,
|
||||
sudoKey?: string | null
|
||||
): boolean => {
|
||||
if (!address || !isValidSubstrateAddress(address)) {
|
||||
return false;
|
||||
@@ -67,7 +80,7 @@ export const hasPermission = (
|
||||
|
||||
// Founder-only operations
|
||||
if (founderOnly.includes(permission)) {
|
||||
return isFounderWallet(address);
|
||||
return isFounderWallet(address, sudoKey);
|
||||
}
|
||||
|
||||
// Everyone can view and trade
|
||||
@@ -77,10 +90,14 @@ export const hasPermission = (
|
||||
/**
|
||||
* Get user role string for display
|
||||
* @param address - User's wallet address
|
||||
* @param sudoKey - Sudo key fetched from blockchain (if available)
|
||||
* @returns Human-readable role
|
||||
*/
|
||||
export const getUserRole = (address: string | null | undefined): string => {
|
||||
export const getUserRole = (
|
||||
address: string | null | undefined,
|
||||
sudoKey?: string | null
|
||||
): string => {
|
||||
if (!address) return 'Guest';
|
||||
if (isFounderWallet(address)) return 'Founder (Admin)';
|
||||
if (isFounderWallet(address, sudoKey)) return 'Sudo (Admin)';
|
||||
return 'User';
|
||||
};
|
||||
|
||||