fix: table level privilege
This commit is contained in:
parent
416af9a58d
commit
42a5a87e96
|
@ -156,7 +156,7 @@ SSdbRaw *mndUserActionEncode(SUserObj *pUser) {
|
||||||
size_t valueLen = 0;
|
size_t valueLen = 0;
|
||||||
valueLen = strlen(stb);
|
valueLen = strlen(stb);
|
||||||
size += sizeof(int32_t);
|
size += sizeof(int32_t);
|
||||||
size += keyLen;
|
size += valueLen;
|
||||||
stb = taosHashIterate(pUser->writeTbs, stb);
|
stb = taosHashIterate(pUser->writeTbs, stb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,7 +369,7 @@ static SSdbRow *mndUserActionDecode(SSdbRaw *pRaw) {
|
||||||
int32_t valuelen = 0;
|
int32_t valuelen = 0;
|
||||||
SDB_GET_INT32(pRaw, dataPos, &valuelen, _OVER);
|
SDB_GET_INT32(pRaw, dataPos, &valuelen, _OVER);
|
||||||
char *value = taosMemoryCalloc(valuelen, sizeof(char));
|
char *value = taosMemoryCalloc(valuelen, sizeof(char));
|
||||||
memset(value, 0, keyLen);
|
memset(value, 0, valuelen);
|
||||||
SDB_GET_BINARY(pRaw, dataPos, value, valuelen, _OVER)
|
SDB_GET_BINARY(pRaw, dataPos, value, valuelen, _OVER)
|
||||||
|
|
||||||
taosHashPut(pUser->writeTbs, key, keyLen, value, valuelen);
|
taosHashPut(pUser->writeTbs, key, keyLen, value, valuelen);
|
||||||
|
@ -458,6 +458,31 @@ SHashObj *mndDupTableHash(SHashObj *pOld) {
|
||||||
return pNew;
|
return pNew;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SHashObj *mndDupUseDbHash(SHashObj *pOld) {
|
||||||
|
SHashObj *pNew =
|
||||||
|
taosHashInit(taosHashGetSize(pOld), taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
|
||||||
|
if (pNew == NULL) {
|
||||||
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t *db = taosHashIterate(pOld, NULL);
|
||||||
|
while (db != NULL) {
|
||||||
|
size_t keyLen = 0;
|
||||||
|
char *key = taosHashGetKey(db, &keyLen);
|
||||||
|
|
||||||
|
if (taosHashPut(pNew, key, keyLen, db, sizeof(*db)) != 0) {
|
||||||
|
taosHashCancelIterate(pOld, db);
|
||||||
|
taosHashCleanup(pNew);
|
||||||
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
db = taosHashIterate(pOld, db);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pNew;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t mndUserDupObj(SUserObj *pUser, SUserObj *pNew) {
|
static int32_t mndUserDupObj(SUserObj *pUser, SUserObj *pNew) {
|
||||||
memcpy(pNew, pUser, sizeof(SUserObj));
|
memcpy(pNew, pUser, sizeof(SUserObj));
|
||||||
pNew->authVersion++;
|
pNew->authVersion++;
|
||||||
|
@ -469,7 +494,7 @@ static int32_t mndUserDupObj(SUserObj *pUser, SUserObj *pNew) {
|
||||||
pNew->readTbs = mndDupTableHash(pUser->readTbs);
|
pNew->readTbs = mndDupTableHash(pUser->readTbs);
|
||||||
pNew->writeTbs = mndDupTableHash(pUser->writeTbs);
|
pNew->writeTbs = mndDupTableHash(pUser->writeTbs);
|
||||||
pNew->topics = mndDupTopicHash(pUser->topics);
|
pNew->topics = mndDupTopicHash(pUser->topics);
|
||||||
pNew->useDbs = mndDupDbHash(pUser->useDbs);
|
pNew->useDbs = mndDupUseDbHash(pUser->useDbs);
|
||||||
taosRUnLockLatch(&pUser->lock);
|
taosRUnLockLatch(&pUser->lock);
|
||||||
|
|
||||||
if (pNew->readDbs == NULL || pNew->writeDbs == NULL || pNew->topics == NULL) {
|
if (pNew->readDbs == NULL || pNew->writeDbs == NULL || pNew->topics == NULL) {
|
||||||
|
|
|
@ -1457,7 +1457,8 @@ int32_t ctgChkSetAuthRes(SCatalog* pCtg, SCtgAuthReq* req, SCtgAuthRsp* res) {
|
||||||
}
|
}
|
||||||
case AUTH_TYPE_READ_OR_WRITE: {
|
case AUTH_TYPE_READ_OR_WRITE: {
|
||||||
if ((pInfo->readDbs && taosHashGet(pInfo->readDbs, dbFName, strlen(dbFName))) ||
|
if ((pInfo->readDbs && taosHashGet(pInfo->readDbs, dbFName, strlen(dbFName))) ||
|
||||||
(pInfo->writeDbs && taosHashGet(pInfo->writeDbs, dbFName, strlen(dbFName)))) {
|
(pInfo->writeDbs && taosHashGet(pInfo->writeDbs, dbFName, strlen(dbFName))) ||
|
||||||
|
(pInfo->useDbs && taosHashGet(pInfo->useDbs, dbFName, strlen(dbFName)))) {
|
||||||
pRes->pass = true;
|
pRes->pass = true;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2022,7 +2022,7 @@ static int32_t buildInsertUserAuthReq(const char* pUser, SName* pName, SArray**
|
||||||
|
|
||||||
SUserAuthInfo userAuth = {.type = AUTH_TYPE_WRITE};
|
SUserAuthInfo userAuth = {.type = AUTH_TYPE_WRITE};
|
||||||
snprintf(userAuth.user, sizeof(userAuth.user), "%s", pUser);
|
snprintf(userAuth.user, sizeof(userAuth.user), "%s", pUser);
|
||||||
// tNameGetFullDbName(pName, userAuth.dbFName);
|
memcpy(&userAuth.tbName, pName, sizeof(SName));
|
||||||
taosArrayPush(*pUserAuth, &userAuth);
|
taosArrayPush(*pUserAuth, &userAuth);
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
Loading…
Reference in New Issue