delete user and authority info
This commit is contained in:
@@ -37,4 +37,10 @@ public class AclUserController {
|
||||
public Object deleteUser(@RequestBody AclUser user) {
|
||||
return aclService.deleteUser(user.getUsername());
|
||||
}
|
||||
|
||||
|
||||
@DeleteMapping("/auth")
|
||||
public Object deleteUserAndAuth(@RequestBody AclUser user) {
|
||||
return aclService.deleteUserAndAuth(user.getUsername());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ public interface AclService {
|
||||
|
||||
ResponseData deleteUser(String name);
|
||||
|
||||
ResponseData deleteUserAndAuth(String name);
|
||||
|
||||
ResponseData getAclList();
|
||||
|
||||
ResponseData getAclList(AclEntry entry);
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.apache.kafka.common.acl.AclBinding;
|
||||
import org.springframework.beans.factory.SmartInitializingSingleton;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import scala.Tuple2;
|
||||
|
||||
/**
|
||||
* kafka-console-ui.
|
||||
@@ -57,7 +58,24 @@ public class AclServiceImpl implements AclService, SmartInitializingSingleton {
|
||||
|
||||
@Override public ResponseData deleteUser(String name) {
|
||||
log.info("delete user: {}", name);
|
||||
return configConsole.deleteUser(name) ? ResponseData.create().success() : ResponseData.create().failed();
|
||||
Tuple2<Object, String> tuple2 = configConsole.deleteUser(name);
|
||||
return (boolean)tuple2._1() ? ResponseData.create().success() : ResponseData.create().failed(tuple2._2());
|
||||
}
|
||||
|
||||
@Override public ResponseData deleteUserAndAuth(String name) {
|
||||
log.info("delete user and authority: {}", name);
|
||||
AclEntry entry = new AclEntry();
|
||||
entry.setPrincipal(name);
|
||||
if ( aclConsole.deleteUserAcl(entry)) {
|
||||
Tuple2<Object, String> delUR = configConsole.deleteUser(name);
|
||||
if (!((boolean)delUR._1())) {
|
||||
return ResponseData.create().failed("用户权限删除成功,但是用户信息删除失败: " + delUR._2());
|
||||
}
|
||||
} else {
|
||||
return ResponseData.create().failed("删除用户权限失败");
|
||||
}
|
||||
|
||||
return ResponseData.create().success();
|
||||
}
|
||||
|
||||
@Override public ResponseData getAclList() {
|
||||
|
||||
24
src/main/resources/logback-test.xml
Normal file
24
src/main/resources/logback-test.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<configuration debug="false">
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<layout class="ch.qos.logback.classic.PatternLayout">
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
<logger name="org.apache.kafka.clients.consumer" level="warn" additivity="false">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</logger>
|
||||
|
||||
<logger name="org.apache.kafka.clients.admin.AdminClientConfig" level="warn" additivity="false">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</logger>
|
||||
|
||||
<logger name="ch.qos.logback" level="error" additivity="false">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</logger>
|
||||
</configuration>
|
||||
@@ -123,8 +123,8 @@ class KafkaAclConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaCon
|
||||
|
||||
def deleteUserAcl(entry: AclEntry): Boolean = {
|
||||
val filter: AclBindingFilter = entry.toAclBindingFilter
|
||||
val delFilter = new AclBindingFilter(new ResourcePatternFilter(ResourceType.ANY, ResourcePattern.WILDCARD_RESOURCE, filter.patternFilter().patternType()),
|
||||
new AccessControlEntryFilter(filter.entryFilter().principal(), filter.entryFilter().host(), AclOperation.ANY, AclPermissionType.ANY))
|
||||
val delFilter = new AclBindingFilter(new ResourcePatternFilter(ResourceType.ANY, null, filter.patternFilter().patternType()),
|
||||
new AccessControlEntryFilter(filter.entryFilter().principal(), null, AclOperation.ANY, AclPermissionType.ANY))
|
||||
|
||||
deleteAcl(Collections.singleton(delFilter))
|
||||
}
|
||||
|
||||
@@ -74,18 +74,18 @@ class KafkaConfigConsole(config: KafkaConfig) extends KafkaConsole(config: Kafka
|
||||
}
|
||||
}
|
||||
|
||||
def deleteUser(name: String): Boolean = {
|
||||
def deleteUser(name: String): (Boolean, String) = {
|
||||
withAdminClient(adminClient => {
|
||||
try {
|
||||
adminClient.alterUserScramCredentials(util.Arrays.asList(
|
||||
new UserScramCredentialDeletion(name, ScramMechanism.fromMechanismName(config.getSaslMechanism))))
|
||||
.all().get(3000, TimeUnit.MILLISECONDS)
|
||||
true
|
||||
(true, null)
|
||||
} catch {
|
||||
case ex: Exception => log.error("deleteUser error", ex)
|
||||
false
|
||||
(false, ex.getMessage)
|
||||
}
|
||||
|
||||
}).asInstanceOf[Boolean]
|
||||
}).asInstanceOf[(Boolean, String)]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user