Merge pull request #19045 from taosdata/enh/authReadOrWrite
enh: support auth read or write
This commit is contained in:
commit
5441dae3ba
|
@ -44,6 +44,7 @@ typedef enum {
|
||||||
AUTH_TYPE_READ = 1,
|
AUTH_TYPE_READ = 1,
|
||||||
AUTH_TYPE_WRITE,
|
AUTH_TYPE_WRITE,
|
||||||
AUTH_TYPE_OTHER,
|
AUTH_TYPE_OTHER,
|
||||||
|
AUTH_TYPE_READ_OR_WRITE,
|
||||||
} AUTH_TYPE;
|
} AUTH_TYPE;
|
||||||
|
|
||||||
typedef struct SUserAuthInfo {
|
typedef struct SUserAuthInfo {
|
||||||
|
|
|
@ -485,6 +485,9 @@ typedef struct SCtgOperation {
|
||||||
ctgOpFunc func;
|
ctgOpFunc func;
|
||||||
} SCtgOperation;
|
} SCtgOperation;
|
||||||
|
|
||||||
|
#define CTG_AUTH_READ(_t) ((_t) == AUTH_TYPE_READ || (_t) == AUTH_TYPE_READ_OR_WRITE)
|
||||||
|
#define CTG_AUTH_WRITE(_t) ((_t) == AUTH_TYPE_WRITE || (_t) == AUTH_TYPE_READ_OR_WRITE)
|
||||||
|
|
||||||
#define CTG_QUEUE_INC() atomic_add_fetch_64(&gCtgMgmt.queue.qRemainNum, 1)
|
#define CTG_QUEUE_INC() atomic_add_fetch_64(&gCtgMgmt.queue.qRemainNum, 1)
|
||||||
#define CTG_QUEUE_DEC() atomic_sub_fetch_64(&gCtgMgmt.queue.qRemainNum, 1)
|
#define CTG_QUEUE_DEC() atomic_sub_fetch_64(&gCtgMgmt.queue.qRemainNum, 1)
|
||||||
|
|
||||||
|
|
|
@ -352,9 +352,9 @@ int32_t ctgChkAuth(SCatalog* pCtg, SRequestConnInfo* pConn, const char* user, co
|
||||||
goto _return;
|
goto _return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == AUTH_TYPE_READ && authRsp.readDbs && taosHashGet(authRsp.readDbs, dbFName, strlen(dbFName))) {
|
if (CTG_AUTH_READ(type) && authRsp.readDbs && taosHashGet(authRsp.readDbs, dbFName, strlen(dbFName))) {
|
||||||
*pass = true;
|
*pass = true;
|
||||||
} else if (type == AUTH_TYPE_WRITE && authRsp.writeDbs && taosHashGet(authRsp.writeDbs, dbFName, strlen(dbFName))) {
|
} else if (CTG_AUTH_WRITE(type) && authRsp.writeDbs && taosHashGet(authRsp.writeDbs, dbFName, strlen(dbFName))) {
|
||||||
*pass = true;
|
*pass = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1549,10 +1549,10 @@ int32_t ctgHandleGetUserRsp(SCtgTaskReq* tReq, int32_t reqType, const SDataBuf*
|
||||||
goto _return;
|
goto _return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->user.type == AUTH_TYPE_READ && pOut->readDbs &&
|
if (CTG_AUTH_READ(ctx->user.type) && pOut->readDbs &&
|
||||||
taosHashGet(pOut->readDbs, ctx->user.dbFName, strlen(ctx->user.dbFName))) {
|
taosHashGet(pOut->readDbs, ctx->user.dbFName, strlen(ctx->user.dbFName))) {
|
||||||
pass = true;
|
pass = true;
|
||||||
} else if (ctx->user.type == AUTH_TYPE_WRITE && pOut->writeDbs &&
|
} else if (CTG_AUTH_WRITE(ctx->user.type) && pOut->writeDbs &&
|
||||||
taosHashGet(pOut->writeDbs, ctx->user.dbFName, strlen(ctx->user.dbFName))) {
|
taosHashGet(pOut->writeDbs, ctx->user.dbFName, strlen(ctx->user.dbFName))) {
|
||||||
pass = true;
|
pass = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -718,11 +718,11 @@ int32_t ctgChkAuthFromCache(SCatalog *pCtg, char *user, char *dbFName, AUTH_TYPE
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pUser->readDbs && taosHashGet(pUser->readDbs, dbFName, strlen(dbFName)) && type == AUTH_TYPE_READ) {
|
if (pUser->readDbs && taosHashGet(pUser->readDbs, dbFName, strlen(dbFName)) && CTG_AUTH_READ(type)) {
|
||||||
*pass = true;
|
*pass = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pUser->writeDbs && taosHashGet(pUser->writeDbs, dbFName, strlen(dbFName)) && type == AUTH_TYPE_WRITE) {
|
if (pUser->writeDbs && taosHashGet(pUser->writeDbs, dbFName, strlen(dbFName)) && CTG_AUTH_WRITE(type)) {
|
||||||
*pass = true;
|
*pass = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue