ccf权限查询java_ccf 权限查询

ccf权限查询:ccf怎么查询权限呢?希望下面的文章对大家有所帮助。

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Scanner;

public class Main {

private ArrayList authList = new ArrayList();

private HashMap> roleMap = new HashMap>();

private HashMap> userMap = new HashMap>();

private Scanner input = new Scanner(System.in);

public static void main(String[] args) {

new Main().run();

}

private void run() {

inputData();

// test();

int n = input.nextInt();

while (n != 0) {

String str1 = input.next();

String str2 = input.next();

int way = getfindway(str2);

if (way == 0) {

System.out.println("false");

n--;

continue;

}

String res = findAuth(str1, str2, way);

System.out.println(res);

n--;

}

}

private void test() {

for (String s : userMap.keySet()) {

ArrayList ll = userMap.get(s);

for (String s1 : ll) {

ArrayList mm = roleMap.get(s1);

for (String s2 : mm) {

System.out.println(s + " " + s1 + " " + s2);

}

}

}

}

private int getfindway(String str) {

boolean flag1 = false;

boolean flag2 = false;

boolean ishave = false;

if (Character.isDigit(str.charAt(str.length() - 1))) {

flag1 = true;

str = str.substring(0, str.length() - 2);

}

for (String s : authList) {

if (s.contains(str)) {

ishave = true;

if (Character.isDigit(s.charAt(s.length() - 1))) {

flag2 = true;

}

}

}

if (!ishave)

return 0;

if (flag1 && flag2) {

return 3;

} else if (!flag1 && flag2) {

return 2;

} else if (!flag1 && !flag2) {

return 1;

}

return -1;

}

private String findAuth(String str1, String str2, int way) {

if (!userMap.keySet().contains(str1)) {

return "false";

}

ArrayList role_list = userMap.get(str1);

ArrayList auth_list;

switch (way) {

case 1:

for (String s : role_list) {

auth_list = roleMap.get(s);

for (String s1 : auth_list) {

if (s1.contains(str2)) {

return "true";

}

}

}

return "false";

case 2:

int ans = -1;

for (String s : role_list) {

auth_list = roleMap.get(s);

for (String s1 : auth_list) {

if (s1.contains(str2)) {

ans = Math.max(ans, s1.charAt(s1.length() - 1) - '0');

}

}

}

if (ans != -1) {

return ans + "";

} else {

return "false";

}

case 3:

int grade = str2.charAt(str2.length() - 1) - '0';

str2 = str2.substring(0, str2.length() - 2);

boolean flag = false;

for (String s : role_list) {

auth_list = roleMap.get(s);

for (String s1 : auth_list) {

if (s1.contains(str2)) {

int grade1 = s1.charAt(s1.length() - 1) - '0';

if (grade1 >= grade) {

flag = true;

}

}

}

}

if (flag) {

return "true";

} else {

return "false";

}

}

System.out.println(way);

return "**";

}

private void inputData() {

int authnum = input.nextInt();

for (int i = 0; i < authnum; i++) {

authList.add(input.next());

}

int rolenum = input.nextInt();

for (int i = 0; i < rolenum; i++) {

String rolename = input.next();

int n = input.nextInt();

ArrayList auths = new ArrayList();

for (int j = 0; j < n; j++) {

auths.add(input.next());

}

roleMap.put(rolename, auths);

}

int usernum = input.nextInt();

for (int i = 0; i < usernum; i++) {

String username = input.next();

int n = input.nextInt();

ArrayList roles = new ArrayList();

for (int j = 0; j < n; j++) {

roles.add(input.next());

}

userMap.put(username, roles);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值