Описание изменений

This commit is contained in:
2025-03-06 21:31:29 +03:00
parent 3157ad0cd9
commit 765637f2d0
57 changed files with 6240 additions and 3695 deletions

View File

@@ -1,34 +1,37 @@
const hre = require('hardhat');
const { getContract } = require('../utils/contracts');
const logger = require('../utils/logger');
async function main() {
const accessToken = await hre.ethers.getContractAt(
'AccessToken',
'0xF352c498cF0857F472dC473E4Dd39551E79B1063'
);
try {
const accessToken = await getContract('AccessToken');
const owner = await accessToken.owner();
console.log('Contract owner:', owner);
const owner = await accessToken.owner();
logger.info('Contract owner:', owner);
// Проверяем все токены и их владельцев
console.log('\nAll tokens:');
for (let i = 1; i <= 10; i++) {
try {
const tokenOwner = await accessToken.ownerOf(i);
console.log(`Token ${i} owner: ${tokenOwner}`);
} catch (error) {
if (!error.message.includes('invalid token ID')) {
console.log(`Token ${i} error:`, error.message);
// Проверяем все токены и их владельцев
logger.info('\nAll tokens:');
for (let i = 1; i <= 10; i++) {
try {
const tokenOwner = await accessToken.ownerOf(i);
logger.info(`Token ${i} owner: ${tokenOwner}`);
} catch (error) {
if (!error.message.includes('invalid token ID')) {
logger.error(`Token ${i} error:`, error.message);
}
}
}
}
// Проверяем активные токены для всех известных адресов
const addresses = [owner, '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'];
// Проверяем активные токены для всех известных адресов
const addresses = [owner, '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'];
console.log('\nActive tokens:');
for (const address of addresses) {
const activeToken = await accessToken.activeTokens(address);
console.log(`${address}: Token ${activeToken.toString()}`);
logger.info('\nActive tokens:');
for (const address of addresses) {
const activeToken = await accessToken.activeTokens(address);
logger.info(`${address}: Token ${activeToken.toString()}`);
}
} catch (error) {
logger.error(error);
process.exit(1);
}
}

View File

@@ -1,50 +0,0 @@
const hre = require('hardhat');
async function main() {
const accessToken = await hre.ethers.getContractAt(
'AccessToken',
'0xF352c498cF0857F472dC473E4Dd39551E79B1063'
);
const moderatorAddress = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8';
try {
console.log('\nMinting moderator token...');
const mintTx = await accessToken.mintAccessToken(moderatorAddress, 1); // MODERATOR
console.log('Waiting for transaction:', mintTx.hash);
await mintTx.wait();
console.log('Moderator token minted');
// Проверяем результат
const activeToken = await accessToken.activeTokens(moderatorAddress);
console.log(`Moderator's active token: ${activeToken}`);
const role = await accessToken.checkRole(moderatorAddress);
console.log(`Moderator role: ${['ADMIN', 'MODERATOR', 'SUPPORT'][role]}`);
} catch (error) {
console.log('Moderator token minting error:', error.message);
}
// Проверяем все активные токены
console.log('\nAll active tokens:');
const addresses = [await accessToken.owner(), moderatorAddress];
for (const address of addresses) {
try {
const activeToken = await accessToken.activeTokens(address);
const role = await accessToken.checkRole(address);
console.log(
`${address}: Token ${activeToken}, Role: ${['ADMIN', 'MODERATOR', 'SUPPORT'][role]}`
);
} catch (error) {
console.log(`${address}: ${error.message}`);
}
}
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error('Script error:', error);
process.exit(1);
});

View File

@@ -1,23 +1,29 @@
const hre = require('hardhat');
const logger = require('../utils/logger');
async function main() {
const AccessToken = await hre.ethers.getContractFactory('AccessToken');
const accessToken = await AccessToken.deploy();
await accessToken.waitForDeployment();
try {
const AccessToken = await hre.ethers.getContractFactory('AccessToken');
const accessToken = await AccessToken.deploy();
await accessToken.waitForDeployment();
const address = await accessToken.getAddress();
console.log('AccessToken deployed to:', address);
const address = await accessToken.getAddress();
logger.info('AccessToken deployed to:', address);
// Создаем первый админский токен для владельца контракта
const [owner] = await hre.ethers.getSigners();
const tx = await accessToken.mintAccessToken(owner.address, 0); // 0 = ADMIN
await tx.wait();
console.log('Admin token minted for:', owner.address);
// Создаем первый админский токен для владельца контракта
const [owner] = await hre.ethers.getSigners();
const tx = await accessToken.mintAccessToken(owner.address, 1); // 1 = ADMIN
await tx.wait();
logger.info('Admin token minted for:', owner.address);
} catch (error) {
logger.error('Deployment error:', error);
process.exit(1);
}
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
logger.error('Unhandled error:', error);
process.exit(1);
});

View File

@@ -1,65 +0,0 @@
const { Pool } = require('pg');
const dotenv = require('dotenv');
dotenv.config();
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false,
});
async function initDb() {
try {
console.log('Инициализация базы данных...');
// Добавляем тестового пользователя
await pool.query(`
INSERT INTO users (address, is_admin)
VALUES ('0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b', TRUE)
ON CONFLICT (address) DO NOTHING
`);
// Добавляем тестовую доску
await pool.query(`
INSERT INTO kanban_boards (title, description, owner_id, is_public)
VALUES (
'Тестовая доска',
'Описание тестовой доски',
(SELECT id FROM users WHERE address = '0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b'),
TRUE
)
ON CONFLICT DO NOTHING
`);
// Получаем ID доски
const boardResult = await pool.query(`
SELECT id FROM kanban_boards WHERE title = 'Тестовая доска' LIMIT 1
`);
if (boardResult.rows.length > 0) {
const boardId = boardResult.rows[0].id;
// Добавляем тестовые колонки
await pool.query(
`
INSERT INTO kanban_columns (board_id, title, position)
VALUES
($1, 'Backlog', 0),
($1, 'In Progress', 1),
($1, 'Review', 2),
($1, 'Done', 3)
ON CONFLICT DO NOTHING
`,
[boardId]
);
}
console.log('База данных инициализирована успешно');
} catch (error) {
console.error('Ошибка при инициализации базы данных:', error);
} finally {
await pool.end();
}
}
initDb();

View File

@@ -1,26 +0,0 @@
const hre = require('hardhat');
async function main() {
const accessToken = await hre.ethers.getContractAt(
'AccessToken',
'0xF352c498cF0857F472dC473E4Dd39551E79B1063'
);
// Отзываем все токены от 1 до 3
for (let i = 1; i <= 3; i++) {
try {
const tx = await accessToken.revokeToken(i);
await tx.wait();
console.log(`Token ${i} revoked`);
} catch (error) {
console.log(`Token ${i} revoke error:`, error.message);
}
}
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});