O Blockchain App Builder gera automaticamente métodos para gerenciar o status da conta de token. Os métodos da Controladora devem ter um decorador @Validator(...params)
para serem chamados.
-
getAccountStatus
- Este método obtém o status atual da conta de token. Esse método pode ser chamado pelo
Token Admin
do chaincode, um Org Admin
da organização especificada ou pelo proprietário da conta de token. Esse método também suporta migração de dados para chaincode existente que foi atualizado para uma versão mais recente.
-
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountStatus(token_id: string, org_id: string, user_id: string) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.get", "TOKEN", { account_id });
try {
return await this.Ctx.AccountStatus.getAccountStatus(account_id);
} catch (err) {
return await this.Ctx.AccountStatus.getDefaultAccountStatus(account_id);
}
}
- Parâmetros:
token_id: string
- O ID do token.
org_id: string
- O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
- O nome de usuário ou o ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma mensagem que inclui detalhes do status da conta de token.
- Exemplo de Valor de Retorno:
{
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "active"
}
-
getAccountStatusHistory
- Este método obtém o histórico do status da conta. Esse método pode ser chamado pelo
Token Admin
do chaincode, um Org Admin
da organização especificada ou pelo proprietário da conta de token.
-
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountStatusHistory(token_id: string, org_id: string, user_id: string) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Account.getAccount(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.history", "TOKEN", { account_id });
const status_id = await this.Ctx.AccountStatus.generateAccountStatusId(account_id);
let account_status_history: any;
try {
account_status_history = await this.Ctx.AccountStatus.history(status_id);
} catch (err) {
return [];
}
return account_status_history;
}
- Parâmetros:
token_id: string
- O ID do token.
org_id: string
- O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
- O nome de usuário ou o ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma mensagem que inclui detalhes do histórico de status da conta.
- Exemplo de Valor de Retorno:
[
{
"trxId": "d5c6d6f601257ba9b6edaf5b7660f00adc13c37d5321b8f7d3a35afab2e93e63",
"timeStamp": "2022-12-02T10:39:14.000Z",
"value": {
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "suspended"
}
},
{
"trxId": "e6c850cfa084dc20ad95fb2bb8165eef3a3bd62a0ac867cccee57c2003125183",
"timeStamp": "2022-12-02T10:37:50.000Z",
"value": {
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "active"
}
}
]
-
activateAccount
- Este método ativa uma conta de token. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por um Org Admin
da organização especificada. Contas excluídas não podem ser ativadas.
-
@Validator(yup.string(), yup.string(), yup.string())
public async activateAccount(token_id: string, org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.activateAccount", "TOKEN", { org_id });
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
return await this.Ctx.Account.activateAccount(account_id);
}
- Parâmetros:
token_id: string
- O ID do token.
org_id: string
- O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
- O nome de usuário ou o ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma representação JSON do objeto de status da conta para a conta de token especificada.
- Exemplo de Valor de Retorno:
{
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "active"
}
-
suspendAccount
- Este método suspende uma conta de token. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por um Org Admin
da organização especificada. Depois que uma conta é suspensa, você não pode concluir nenhuma operação que atualize a conta. Uma conta excluída não pode ser suspensa.
-
@Validator(yup.string(), yup.string(), yup.string())
public async suspendAccount(token_id: string, org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.suspendAccount", "TOKEN", { org_id });
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
return await this.Ctx.Account.suspendAccount(account_id);
}
- Parâmetros:
token_id: string
- O ID do token.
org_id: string
- O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
- O nome de usuário ou o ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma representação JSON do objeto de status da conta para a conta de token especificada.
- Exemplo de Valor de Retorno:
{
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "suspended"
}
-
deleteAccount
- Este método exclui uma conta de token. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por um Org Admin
da organização especificada. Depois que uma conta é excluída, não é possível concluir nenhuma operação que atualize a conta. A conta excluída está em um estado final e não pode ser alterada para nenhum outro estado. Para excluir uma conta, o saldo da conta e o saldo retido devem ser zero.
-
@Validator(yup.string(), yup.string(), yup.string())
public async deleteAccount(token_id: string, org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.deleteAccount", "TOKEN", { org_id });
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
return await this.Ctx.Account.deleteAccount(account_id);
}
- Parâmetros:
token_id: string
- O ID do token.
org_id: string
- O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
- O nome de usuário ou o ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma representação JSON do objeto de status da conta para a conta de token especificada.
- Exemplo de Valor de Retorno:
{
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "deleted"
}