Example #1
0
SD_CODE loginfunTest()
{
	Request::CURL_Init();
	std::string response;
	AccessToken token;
	Request curl;
	curl.Init();
	std::string account = "*****@*****.**";
	std::string plainpwd ="aA111111";
	std::string md5pwd = Digestor::HashPassword(plainpwd);
	printf("pwd:%s,md5pwd:%s\r\n",plainpwd.c_str(),md5pwd.c_str());
	SD_CODE ret = curl.Ent_Login("https://e.surdoc.net",account,md5pwd,15000,response);
	if(ret != SD_SUCCESSED){
	printf("\r\nEnt_login error\r\n");
	Request::CURL_UnInit();	
	return ret;}
	else{
	printf("\r\nEnt_login successed.\r\n");}		
	
	AccessToken temp_token;
	SDContext *ctx = &CTX;
 	CJsonParse parse(response);
 	if(!parse.IsValid()|| !parse.Enterprise_GetAccessToken(&temp_token, ctx))
	    printf("failed to parse login response.\r\n");	
	printf("privatekey:%s\r\n",temp_token.privatekey.c_str());
	printf("rootid:%s\r\n",ctx->root_dir_id.c_str());
	
	uint64_t key=TokenManager::get().SetToken(temp_token);
	AccessToken tm_token;
	 TokenManager::get().GetToken(key,tm_token);
	printf("TokenManage privatekey:%s\r\n",tm_token.privatekey.c_str());
	
	ByteArray pk;
	int iret = EciesHelper::TryParsePrivKey(temp_token.privatekey,plainpwd,&pk);
	if(iret == 1)
	{
           token.privatekey = pk.toUrlBase64Str();		
	   printf("token.privatekey:%s\r\n",token.privatekey.c_str());
	}else{
		printf("failed to parse user`s private key\r\n");
		return SD_FAILED;
	}
	ByteArray admin_pk;
	iret = EciesHelper::TryParsePrivKey(temp_token.admin_privkey, plainpwd, &admin_pk);
	if (iret == 1) {
		token.admin_privkey = admin_pk.toUrlBase64Str();
		printf("token.admin_privkey:%s\r\n",token.admin_privkey.c_str());
	} else {
		printf("failed to parse admin's private key\r\n");
		return SD_FAILED;
	}		
	token.server = temp_token.server;
	token.dbserver = temp_token.dbserver;
	token.svgserver = temp_token.svgserver;
	token.webserver = temp_token.webserver;

	token.user_department = temp_token.user_department;
	token.user_email = temp_token.user_email;
	token.user_name = temp_token.user_name;
	token.user_role = temp_token.user_role;
	token.user_space = temp_token.user_space;

	if (!temp_token.access_token.empty())
	{
		token.access_token = temp_token.access_token;
		token.refresh_token = temp_token.refresh_token;
		token.resource_server = temp_token.resource_server;
		token.expires_in = temp_token.expires_in;
	}

	//uint64_t key = TokenManager::get().SetToken(token);

	Request::CURL_UnInit();
  return SD_SUCCESSED;
}