internal static AdaptorUser GetUserForSessionCode(string sessionCode, IUnitOfWork unitOfWork) { IUserAndLimitationManagementLogic authenticationLogic = LogicFactory.GetLogicFactory().CreateUserAndLimitationManagementLogic(unitOfWork); AdaptorUser loggedUser = authenticationLogic.GetUserForSessionCode(sessionCode); return(loggedUser); }
/// <summary> /// Get user for given <paramref name="sessionCode"/> and check if the user has <paramref name="requiredUserRole"/>. /// </summary> /// <param name="sessionCode">User session code.</param> /// <param name="unitOfWork">Unit of work.</param> /// <param name="requiredUserRole">Required user role.</param> /// <returns>AdaptorUser object if user has required user role.</returns> /// <exception cref="InsufficientRoleException">Is thrown if the user doesn't have <paramref name="requiredUserRole"/>.</exception> internal static AdaptorUser GetValidatedUserForSessionCode(string sessionCode, IUnitOfWork unitOfWork, UserRoleType requiredUserRole) { IUserAndLimitationManagementLogic authenticationLogic = LogicFactory.GetLogicFactory().CreateUserAndLimitationManagementLogic(unitOfWork); AdaptorUser loggedUser = authenticationLogic.GetUserForSessionCode(sessionCode); CheckUserRole(loggedUser, requiredUserRole); return(loggedUser); }
public async Task <string> AuthenticateUserAsync(AuthenticationCredentialsExt credentials) { try { AuthenticationCredentials credentialsIn; if (credentials is PasswordCredentialsExt) { credentialsIn = new PasswordCredentials { Username = credentials.Username, Password = ((PasswordCredentialsExt)credentials).Password }; } else if (credentials is DigitalSignatureCredentialsExt) { credentialsIn = new DigitalSignatureCredentials { Username = credentials.Username, DigitalSignature = Array.ConvertAll(((DigitalSignatureCredentialsExt)credentials).DigitalSignature, b => unchecked ((byte)b)), SignedContent = CombineContentWithSalt(credentials.Username) }; } else if (credentials is OpenIdCredentialsExt openIdCredentials) { //Username is extracted from the access_token later. credentialsIn = new OpenIdCredentials { OpenIdAccessToken = openIdCredentials.OpenIdAccessToken, }; } else { log.Error("Credentials of class " + credentials.GetType().Name + " are not supported. Change the HaaSMiddleware.ServiceTier.UserAndLimitationManagement.UserAndLimitationManagementService.AuthenticateUser() method to add support for additional credential types."); throw new ArgumentException("Credentials of class " + credentials.GetType().Name + " are not supported. Change the HaaSMiddleware.ServiceTier.UserAndLimitationManagement.UserAndLimitationManagementService.AuthenticateUser() method to add support for additional credential types."); } using (IUnitOfWork unitOfWork = UnitOfWorkFactory.GetUnitOfWorkFactory().CreateUnitOfWork()) { IUserAndLimitationManagementLogic userLogic = LogicFactory.GetLogicFactory().CreateUserAndLimitationManagementLogic(unitOfWork); var result = await userLogic.AuthenticateUserAsync(credentialsIn); return(result); } } catch (Exception exc) { ExceptionHandler.ThrowProperExternalException(exc); return(null); } }
public ResourceUsageExt[] GetCurrentUsageAndLimitationsForCurrentUser(string sessionCode) { try { using (IUnitOfWork unitOfWork = UnitOfWorkFactory.GetUnitOfWorkFactory().CreateUnitOfWork()) { AdaptorUser loggedUser = GetValidatedUserForSessionCode(sessionCode, unitOfWork, UserRoleType.Reporter); IUserAndLimitationManagementLogic userLogic = LogicFactory.GetLogicFactory().CreateUserAndLimitationManagementLogic(unitOfWork); IList <ResourceUsage> usages = userLogic.GetCurrentUsageAndLimitationsForUser(loggedUser); return((from usage in usages select usage.ConvertIntToExt()).ToArray()); } } catch (Exception exc) { ExceptionHandler.ThrowProperExternalException(exc); return(null); } }