[fix](auth) Fix no auth,but can select count(*) (#35465)
when select count(*),cols is empty, should check table priv
This commit is contained in:
@ -17,13 +17,19 @@
|
||||
|
||||
package org.apache.doris.nereids.rules.analysis;
|
||||
|
||||
import org.apache.doris.analysis.UserIdentity;
|
||||
import org.apache.doris.catalog.DatabaseIf;
|
||||
import org.apache.doris.catalog.TableIf;
|
||||
import org.apache.doris.common.ErrorCode;
|
||||
import org.apache.doris.common.ErrorReport;
|
||||
import org.apache.doris.common.UserException;
|
||||
import org.apache.doris.datasource.CatalogIf;
|
||||
import org.apache.doris.mysql.privilege.AccessControllerManager;
|
||||
import org.apache.doris.mysql.privilege.PrivPredicate;
|
||||
import org.apache.doris.qe.ConnectContext;
|
||||
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@ -52,7 +58,15 @@ public class UserAuthentication {
|
||||
return;
|
||||
}
|
||||
String ctlName = catalog.getName();
|
||||
connectContext.getEnv().getAccessManager().checkColumnsPriv(
|
||||
connectContext.getCurrentUserIdentity(), ctlName, dbName, tableName, columns, PrivPredicate.SELECT);
|
||||
AccessControllerManager accessManager = connectContext.getEnv().getAccessManager();
|
||||
UserIdentity userIdentity = connectContext.getCurrentUserIdentity();
|
||||
if (CollectionUtils.isEmpty(columns)) {
|
||||
if (!accessManager.checkTblPriv(userIdentity, ctlName, dbName, tableName, PrivPredicate.SELECT)) {
|
||||
ErrorReport.reportAnalysisException(ErrorCode.ERR_TABLE_ACCESS_DENIED_ERROR,
|
||||
PrivPredicate.SELECT.getPrivs().toString(), tableName);
|
||||
}
|
||||
} else {
|
||||
accessManager.checkColumnsPriv(userIdentity, ctlName, dbName, tableName, columns, PrivPredicate.SELECT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user