/// <summary> /// Retrieves an authorization token from the server /// </summary> /// <param name="portalUrl">URL of the Cireson Portal</param> /// <param name="userName">User name</param> /// <param name="password">User's password</param> /// <param name="languageCode">Portal language code</param> /// <exception cref="System.Security.Authentication.InvalidCredentialException">Thrown when user credentials are invalid.</exception> /// <exception cref="CiresonPortalAPI.CiresonApiException">Thrown when an error occurs in the API.</exception> /// <returns></returns> public static async Task <AuthorizationToken> GetAuthorizationToken(string portalUrl, string userName, SecureString password, string domain, string languageCode = "ENU") { try { // First check to see if we have Windows Authentication enabled bool windowsAuthEnabled = await DetectWindowsAuthentication(portalUrl); // Set up credentials PortalCredentials credentials = new PortalCredentials(); credentials.Username = userName; credentials.SecurePassword = password; credentials.Domain = domain; // Initialize the HTTP helper and do the heavy lifting PortalHttpHelper helper = new PortalHttpHelper(portalUrl, credentials, windowsAuthEnabled); string result = await helper.PostAsync(AUTHORIZATION_ENDPOINT, JsonConvert.SerializeObject(new { UserName = credentials.Username, Password = credentials.Password, LanguageCode = languageCode })); // Strip off beginning and ending quotes result = result.TrimStart('\"').TrimEnd('\"'); // Create a new authorization token AuthorizationToken token = new AuthorizationToken(portalUrl, credentials, languageCode, result, windowsAuthEnabled); // Fetch this user's properties ConsoleUser user = await AuthorizationController.GetUserRights(token, userName, domain); token.User = user; return(token); } catch { throw; // Rethrow exceptions } }
/// <summary> /// Queries the Cireson Portal for the specified user's security rights /// </summary> /// <param name="authToken">AuthorizationToken to use</param> /// <param name="userName">User name to query</param> /// <param name="domain">Domain of the user</param> /// <returns></returns> public static async Task <ConsoleUser> GetUserRights(AuthorizationToken authToken, string userName, string domain) { if (!authToken.IsValid) { throw new InvalidCredentialException("AuthorizationToken is not valid."); } string endpointUrl = IS_USER_AUTHORIZED_ENDPOINT + "?userName="******"&domain=" + domain; try { // Initialize the HTTP helper and get going PortalHttpHelper helper = new PortalHttpHelper(authToken); string result = await helper.PostAsync(endpointUrl, String.Empty); // Deserialize the object to an ExpandoObject and return a ConsoleUser ExpandoObjectConverter converter = new ExpandoObjectConverter(); dynamic obj = JsonConvert.DeserializeObject <ExpandoObject>(result, converter); ConsoleUser returnObj = new ConsoleUser(obj); returnObj.IncidentSupportGroups = await GetUsersTierQueueEnumerations(authToken, returnObj); return(returnObj); } catch (Exception) { throw; // Rethrow exceptions } }
/// <summary> /// Returns a list of tier queue (support group) enumerations that the specified ConsoleUser is a member of /// </summary> /// <param name="authToken">AuthorizationToken to use</param> /// <param name="user">ConsoleUser token</param> /// <returns></returns> internal static async Task <List <Enumeration> > GetUsersTierQueueEnumerations(AuthorizationToken authToken, ConsoleUser user) { if (!authToken.IsValid) { throw new InvalidCredentialException("AuthorizationToken is not valid."); } string endpointUrl = GET_TIER_QUEUES_ENDPOINT + "?id=" + user.Id.ToString("D"); try { PortalHttpHelper helper = new PortalHttpHelper(authToken); string result = await helper.GetAsync(endpointUrl); dynamic obj = JsonConvert.DeserializeObject <List <ExpandoObject> >(result, new ExpandoObjectConverter()); List <Enumeration> returnList = new List <Enumeration>(); foreach (var enumJson in obj) { returnList.Add(new Enumeration(enumJson.Id, enumJson.Text, enumJson.Name, true, false)); } return(returnList); } catch (Exception) { throw; // Rethrow exceptions } }
/// <summary> /// Queries the Cireson Portal for the specified user's security rights /// </summary> /// <param name="authToken">AuthorizationToken to use</param> /// <param name="userName">User name to query</param> /// <param name="domain">Domain of the user</param> /// <returns></returns> public static async Task<ConsoleUser> GetUserRights(AuthorizationToken authToken, string userName, string domain) { if (!authToken.IsValid) { throw new InvalidCredentialException("AuthorizationToken is not valid."); } string endpointUrl = IS_USER_AUTHORIZED_ENDPOINT + "?userName="******"&domain=" + domain; try { // Initialize the HTTP helper and get going PortalHttpHelper helper = new PortalHttpHelper(authToken); string result = await helper.PostAsync(endpointUrl, String.Empty); // Deserialize the object to an ExpandoObject and return a ConsoleUser ExpandoObjectConverter converter = new ExpandoObjectConverter(); dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(result, converter); ConsoleUser returnObj = new ConsoleUser(obj); returnObj.IncidentSupportGroups = await GetUsersTierQueueEnumerations(authToken, returnObj); return returnObj; } catch (Exception e) { throw; // Rethrow exceptions } }
/// <summary> /// Returns a list of tier queue (support group) enumerations that the specified ConsoleUser is a member of /// </summary> /// <param name="authToken">AuthorizationToken to use</param> /// <param name="user">ConsoleUser token</param> /// <returns></returns> internal static async Task<List<Enumeration>> GetUsersTierQueueEnumerations(AuthorizationToken authToken, ConsoleUser user) { if (!authToken.IsValid) { throw new InvalidCredentialException("AuthorizationToken is not valid."); } string endpointUrl = GET_TIER_QUEUES_ENDPOINT + "/" + user.Id.ToString("D"); try { PortalHttpHelper helper = new PortalHttpHelper(authToken); string result = await helper.GetAsync(endpointUrl); dynamic obj = JsonConvert.DeserializeObject<List<ExpandoObject>>(result, new ExpandoObjectConverter()); List<Enumeration> returnList = new List<Enumeration>(); foreach (var enumJson in obj) { returnList.Add(new Enumeration(enumJson.Id, enumJson.Text, enumJson.Name, true, false)); } return returnList; } catch (Exception e) { throw; // Rethrow exceptions } }