remove normal table priviledge
This commit is contained in:
parent
dbc75feac3
commit
38b6bfd848
|
@ -702,6 +702,39 @@ static int32_t mndTablePriviledge(SMnode *pMnode, SHashObj *hash, SAlterUserReq
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t mndRemoveTablePriviledge(SMnode *pMnode, SHashObj *hash, SAlterUserReq *alterReq, SSdb *pSdb){
|
||||||
|
void *pIter = NULL;
|
||||||
|
if (strcmp(alterReq->objname, "1.*") != 0) {
|
||||||
|
char tbFName[TSDB_TABLE_FNAME_LEN] = {0};
|
||||||
|
snprintf(tbFName, sizeof(tbFName), "%s.%s", alterReq->objname, alterReq->tabName);
|
||||||
|
int32_t len = strlen(tbFName) + 1;
|
||||||
|
|
||||||
|
if (taosHashRemove(hash, tbFName, len) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
while (1) {
|
||||||
|
SStbObj *pStb = NULL;
|
||||||
|
pIter = sdbFetch(pSdb, SDB_STB, pIter, (void **)&pStb);
|
||||||
|
if (pIter == NULL) break;
|
||||||
|
int32_t len = strlen(pStb->name) + 1;
|
||||||
|
|
||||||
|
if(strcmp(pStb->db, alterReq->objname) == 0){
|
||||||
|
if (taosHashRemove(hash, pStb->name, len) != 0) {
|
||||||
|
mndReleaseStb(pMnode, pStb);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//taosHashPut(newUser.writeStbs, pStb->name, len, pStb->name, TSDB_DB_FNAME_LEN);
|
||||||
|
//sdbRelease(pSdb, pStb);
|
||||||
|
}
|
||||||
|
|
||||||
|
//taosHashClear(newUser.readStbs);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t mndProcessAlterUserReq(SRpcMsg *pReq) {
|
static int32_t mndProcessAlterUserReq(SRpcMsg *pReq) {
|
||||||
SMnode *pMnode = pReq->info.node;
|
SMnode *pMnode = pReq->info.node;
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
|
@ -852,75 +885,13 @@ static int32_t mndProcessAlterUserReq(SRpcMsg *pReq) {
|
||||||
if (alterReq.alterType == TSDB_ALTER_USER_REMOVE_READ_TABLE ||
|
if (alterReq.alterType == TSDB_ALTER_USER_REMOVE_READ_TABLE ||
|
||||||
alterReq.alterType == TSDB_ALTER_USER_REMOVE_READ_TAG ||
|
alterReq.alterType == TSDB_ALTER_USER_REMOVE_READ_TAG ||
|
||||||
alterReq.alterType == TSDB_ALTER_USER_REMOVE_ALL_TABLE) {
|
alterReq.alterType == TSDB_ALTER_USER_REMOVE_ALL_TABLE) {
|
||||||
if (strcmp(alterReq.objname, "1.*") != 0) {
|
if(mndRemoveTablePriviledge(pMnode, newUser.readTbs, &alterReq, pSdb) != 0) goto _OVER;
|
||||||
char tbFName[TSDB_TABLE_FNAME_LEN] = {0};
|
|
||||||
snprintf(tbFName, sizeof(tbFName), "%s.%s", alterReq.objname, alterReq.tabName);
|
|
||||||
|
|
||||||
int32_t len = strlen(tbFName) + 1;
|
|
||||||
SStbObj *pStb = mndAcquireStb(pMnode, tbFName);
|
|
||||||
if (pStb == NULL) {
|
|
||||||
mndReleaseStb(pMnode, pStb);
|
|
||||||
goto _OVER;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (taosHashRemove(newUser.readTbs, tbFName, len) != 0) {
|
|
||||||
mndReleaseStb(pMnode, pStb);
|
|
||||||
goto _OVER;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
while (1) {
|
|
||||||
SStbObj *pStb = NULL;
|
|
||||||
pIter = sdbFetch(pSdb, SDB_STB, pIter, (void **)&pStb);
|
|
||||||
if (pIter == NULL) break;
|
|
||||||
int32_t len = strlen(pStb->name) + 1;
|
|
||||||
|
|
||||||
if(strcmp(pStb->db, alterReq.objname) == 0){
|
|
||||||
if (taosHashRemove(newUser.readTbs, pStb->name, len) != 0) {
|
|
||||||
mndReleaseStb(pMnode, pStb);
|
|
||||||
goto _OVER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//taosHashPut(newUser.writeStbs, pStb->name, len, pStb->name, TSDB_DB_FNAME_LEN);
|
|
||||||
//sdbRelease(pSdb, pStb);
|
|
||||||
}
|
|
||||||
|
|
||||||
//taosHashClear(newUser.readStbs);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (alterReq.alterType == TSDB_ALTER_USER_REMOVE_WRITE_TABLE ||
|
if (alterReq.alterType == TSDB_ALTER_USER_REMOVE_WRITE_TABLE ||
|
||||||
alterReq.alterType == TSDB_ALTER_USER_REMOVE_WRITE_TAG ||
|
alterReq.alterType == TSDB_ALTER_USER_REMOVE_WRITE_TAG ||
|
||||||
alterReq.alterType == TSDB_ALTER_USER_REMOVE_ALL_TABLE) {
|
alterReq.alterType == TSDB_ALTER_USER_REMOVE_ALL_TABLE) {
|
||||||
if (strcmp(alterReq.objname, "1.*") != 0) {
|
if(mndRemoveTablePriviledge(pMnode, newUser.writeTbs, &alterReq, pSdb) != 0) goto _OVER;
|
||||||
char tbFName[TSDB_TABLE_FNAME_LEN] = {0};
|
|
||||||
snprintf(tbFName, sizeof(tbFName), "%s.%s", alterReq.objname, alterReq.tabName);
|
|
||||||
|
|
||||||
int32_t len = strlen(tbFName) + 1;
|
|
||||||
SStbObj *pStb = mndAcquireStb(pMnode, tbFName);
|
|
||||||
if (pStb == NULL) {
|
|
||||||
mndReleaseStb(pMnode, pStb);
|
|
||||||
goto _OVER;
|
|
||||||
}
|
|
||||||
if (taosHashRemove(newUser.writeTbs, tbFName, len) != 0) {
|
|
||||||
mndReleaseStb(pMnode, pStb);
|
|
||||||
goto _OVER;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
while (1) {
|
|
||||||
SStbObj *pStb = NULL;
|
|
||||||
pIter = sdbFetch(pSdb, SDB_STB, pIter, (void **)&pStb);
|
|
||||||
if (pIter == NULL) break;
|
|
||||||
int32_t len = strlen(pStb->name) + 1;
|
|
||||||
|
|
||||||
if(strcmp(pStb->db, alterReq.objname) == 0){
|
|
||||||
if (taosHashRemove(newUser.writeTbs, pStb->name, len) != 0) {
|
|
||||||
mndReleaseStb(pMnode, pStb);
|
|
||||||
goto _OVER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (alterReq.alterType == TSDB_ALTER_USER_ADD_SUBSCRIBE_TOPIC) {
|
if (alterReq.alterType == TSDB_ALTER_USER_ADD_SUBSCRIBE_TOPIC) {
|
||||||
|
|
Loading…
Reference in New Issue