《授权项》中的主要接口包括:
▪sc3_delete_auth_tem_from_group
▪sc3_query_auth_items_of_group
▪sc3_query_groups_of_auth_item
用户可以自己通过授权项定义授权而不影响已经配置好的用户与组的功能。通过添加授权项并把授权项加入组,这个组中的所有用户就拥有这个授权项的权限了。
authitem |
|
//*Auth Item Function
#include "hdKingAPI.h" #include "error_code.h" #include <stdio.h> #include <string.h>
int32 main() { int32 nRet = RD_SUCCESS; HD3Connection conn; HD3SecGroup secGroup; HD3SecAuthItem secAuthItem; int32 i = 0; int32 nAuth = 0;
HD3HANDLE hIter = NULL; const int32 USER_COUNT = 3; const int32 GROUP_COUNT = 3; const int32 AUTH_ITEM_COUNT = 3;
HD3SecUser users[USER_COUNT]; HD3SecGroup groups[GROUP_COUNT];
HD3SecAuthItem authItems[AUTH_ITEM_COUNT];
//connect strcpy(conn.szAddress, "127.0.0.1"); conn.nPort = 5673; conn.nTimeout = 3; nRet = nt3_connect(&conn); if (nRet != RD_SUCCESS) { printf("connect to server failed, error code[%d]!\n", nRet); return -1; } printf("connect to server successful!\n");
//login nRet = sc3_login("admin" , "admin"); if (nRet != RD_SUCCESS) { printf("login server failed, error code[%d]!\n", nRet); return -1; } printf("login server successful!\n");
//add users for (i = 0; i < USER_COUNT; i ++) { sprintf(users[i].szUserName, "userName_%d", i); sprintf(users[i].szPasswd, "passWord", i); sprintf(users[i].szUserDesc, "userDesc_%d", i); nRet = sc3_add_user(users + i); if (nRet != RD_SUCCESS) { printf("add user[name:%s] failed, error code[%d]!\n", users[i].szUserName, nRet); return -1; } printf("add user successful!\n"); }
//add auth items for (i = 0; i < AUTH_ITEM_COUNT; i ++) { sprintf(authItems[i].szName, "authItemName_%d", i); sprintf(authItems[i].szDesc, "authItemDesc_%d", i); authItems[i].nAuth = 0; nRet = sc3_add_auth_item(authItems + i); if (nRet != RD_SUCCESS) { printf("add auth item[name:%s] failed, error code[%d]!\n", authItems[i].szName, nRet); return -1; } printf("add auth item successful!\n");
sprintf(authItems[i].szDesc, "authItemDesc_%d_modified", i); nRet = sc3_modify_auth_item(authItems + i); if (nRet != RD_SUCCESS) { printf("modify auth item[name:%s] failed, error code[%d]!\n", authItems[i].szName, nRet); return -1; } printf("modify auth item successful!\n"); }
//query all auth items nRet = sc3_query_all_auth_items(&hIter); if (nRet != RD_SUCCESS) { printf("query sc_query_all_auth_items failed, error code[%d]!\n", nRet); return -1; }
while (true) { nRet = ut3_get_item_step(hIter, &secAuthItem); if (RD_SUCCESS == nRet) { printf("query auth item[name:%s] succeed!\n", secAuthItem.szName); } else if (EC_HD_API_QUERY_END == nRet) { printf("query auth item complete!\n"); break; } else { printf("query auth item failed, error code[%d]!\n", nRet); break; } } ut3_free_handle(hIter);
//add group for (i = 0; i < GROUP_COUNT; i ++) { //add group sprintf(groups[i].szGroupName, "groupName_%d", i); sprintf(groups[i].szGroupDesc, "groupDesc_%d", i); nRet = sc3_add_group(groups + i); if (nRet != RD_SUCCESS) { printf("add group[name:%s] failed, error code[%d]!\n", groups[i].szGroupDesc, nRet); return -1; } printf("add group successful!\n"); }
//add auth item to group for (i = 0; i < USER_COUNT; i ++) { nRet = sc3_add_auth_item_to_group(authItems[i].szName, groups[i].szGroupName); if (nRet != RD_SUCCESS) { printf("sc_add_auth_item_to_group failed, error code[%d]!\n", nRet); return -1; } printf("sc_add_auth_item_to_group successful!\n"); }
//query all auth items of group nRet = sc3_query_auth_items_of_group(groups[0].szGroupName, &hIter); if (nRet != RD_SUCCESS) { printf("query user of group[name:%s] failed, error code[%d]!\n", groups[0].szGroupName, nRet); return -1; }
while (true) { nRet = ut3_get_item_step(hIter, &secAuthItem); if (RD_SUCCESS == nRet) { printf("query auth item[name:%s] of group[name:%s] succeed!\n", secAuthItem.szName, groups[0].szGroupName); } else if (EC_HD_API_QUERY_END == nRet) { printf("query auth item of group[name:%s] complete!\n", groups[0].szGroupName); break; } else { printf("query auth item of group[name:%s] failed, error code[%d]!\n", groups[0].szGroupName, nRet); break; } } ut3_free_handle(hIter);
//query all group of auth item nRet = sc3_query_groups_of_auth_item(authItems[0].szName, &hIter); if (nRet != RD_SUCCESS) { printf("query sc_query_groups_of_auth_item [name:%s] failed, error code[%d]!\n", authItems[0].szName, nRet); return -1; }
while (true) { nRet = ut3_get_item_step(hIter, &secGroup); if (RD_SUCCESS == nRet) { printf("query group[name:%s] of auth item[name:%s] succeed!\n", secGroup.szGroupName, authItems[0].szName); } else if (EC_HD_API_QUERY_END == nRet) { printf("query group of auth item[name:%s] complete!\n", authItems[0].szName); break; } else { printf("query group of auth item[name:%s] failed, error code[%d]!\n", authItems[0].szName, nRet); break; } } ut3_free_handle(hIter);
//query user's auth nRet = sc3_query_auth_of_user(users[0].szUserName, authItems[0].szName, &nAuth); if (nRet != RD_SUCCESS) { printf("query sc_query_auth_of_user failed, error code[%d], user[%s], auth item name[%s]\n", nRet, users[0].szUserName, authItems[0].szName); return -1; } printf("query sc_query_auth_of_user successful\n");
// delete auth item from group for (i = 0; i < USER_COUNT; i ++) { nRet = sc3_delete_auth_item_from_group(authItems[i].szName, groups[i].szGroupName); if (nRet != RD_SUCCESS) { printf("delete auth item[name:%s] from group[name:%s] failed, error code[%d]!\n", authItems[i].szName, groups[i].szGroupName, nRet); return -1; } printf("delete auth item[name:%s] from group[name:%s] successful!\n", authItems[i].szName, groups[i].szGroupName); }
//delete auth item for (i = 0; i < AUTH_ITEM_COUNT; i ++) { nRet = sc3_delete_auth_item(authItems[i].szName); if (nRet != RD_SUCCESS) { printf("delete auth item[name:%s] failed, error code[%d]!\n", authItems[i].szName, nRet); return -1; } printf("delete auth item[name:%s] successful!\n", authItems[i].szName); }
//disconnect nt3_disconnect(); return 0; } |
©2015. All Rights Reserved.