授权项

Navigation:  C++ > 权限管理接口 >

授权项

Previous pageReturn to chapter overviewNext page

 

《授权项》中的主要接口包括:

sc3_add_auth_item

sc3_delete_auth_item

sc3_modify_auth_item

sc3_add_auth_item_to_group

sc3_delete_auth_tem_from_group

sc3_query_all_auth_item

sc3_query_auth_items_of_group

sc3_query_groups_of_auth_item

sc3_query_auth_of_user


用户可以自己通过授权项定义授权而不影响已经配置好的用户与组的功能。通过添加授权项并把授权项加入组,这个组中的所有用户就拥有这个授权项的权限了。

authitem

copycode!MISSING PHRASE 'COPYCODE'!

//*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_COUNTi ++)

 {                

         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].szUserNamenRet);

                 return -1;

         }

         printf("add user successful!\n");

 }

 

 //add auth items

 for (i = 0; i < AUTH_ITEM_COUNTi ++)

 {

         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].szNamenRet);

                 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].szNamenRet);

                 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_COUNTi ++)

 {

         //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].szGroupDescnRet);

                 return -1;

         }

         printf("add group successful!\n");

 }

 

 //add auth item to group

 for (i = 0; i < USER_COUNTi ++)

 {

         nRet = sc3_add_auth_item_to_group(authItems[i].szNamegroups[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].szGroupNamenRet);

         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.szNamegroups[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].szGroupNamenRet);

                 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].szNamenRet);

         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.szGroupNameauthItems[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].szNamenRet);

                 break;

         }

 }

 ut3_free_handle(hIter);

 

 //query user's auth

 nRet = sc3_query_auth_of_user(users[0].szUserNameauthItems[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"nRetusers[0].szUserNameauthItems[0].szName);

         return -1;

 }

 printf("query sc_query_auth_of_user successful\n");

 

 // delete auth item from group

 for (i = 0; i < USER_COUNTi ++)

 {

         nRet = sc3_delete_auth_item_from_group(authItems[i].szNamegroups[i].szGroupName);

         if (nRet != RD_SUCCESS)

         {

                 printf("delete auth item[name:%s] from group[name:%s] failed, error code[%d]!\n"

                         authItems[i].szNamegroups[i].szGroupNamenRet);

                 return -1;

         }

         printf("delete auth item[name:%s] from group[name:%s] successful!\n"authItems[i].szNamegroups[i].szGroupName);

 }

 

 //delete auth item

 for (i = 0; i < AUTH_ITEM_COUNTi ++)

 {

         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].szNamenRet);

                 return -1;

         }

         printf("delete auth item[name:%s] successful!\n"authItems[i].szName);

 }

 

 //disconnect

 nt3_disconnect();

 return 0;

}

 

©2015. All Rights Reserved.