public async Task <ActionResult> GetUsersActivated() { if (Request.Cookies.AllKeys.Contains("token")) { _apiHttpClient.Token = Request.Cookies["token"].Value; } var license = await LicenseMapper.GetLicense(); var(users, roles, languages, teams) = await _applicationUsersService.GetUsersAndRolesAndLanguages(); var model = new ActivatedUsersViewModel { ActivatedUsers = license.UsersPool .Where(userId => users.Any(_ => _.UserId == userId)) .Select(userId => users.Single(_ => _.UserId == userId)) .Select(user => new UserViewModel { UserId = user.UserId, FullName = user.FullName }).ToList() }; return(PartialView(model)); }
public async Task LicenseMapper_get_non_existing_with_fallback() { var licenseMapper = new LicenseMapper(new FileUtilities()); var licenseType = await licenseMapper.GetLicenseType("juba", "fallback"); Assert.AreEqual("fallback", licenseType); }
public async Task LicenseMapper_get_existing() { var licenseMapper = new LicenseMapper(new FileUtilities()); var licenseType = await licenseMapper.GetLicenseType("https://opensource.org/licenses/mit-license.php"); Assert.AreEqual("MIT", licenseType); }
public async Task <ActionResult> GetEmailTemplate(string name, string company, string email) { if (Request.Cookies.AllKeys.Contains("token")) { _apiHttpClient.Token = Request.Cookies["token"].Value; } var sys = _systemInformationService.GetBasicInformation(); var systemInfoStr = LocalizedStrings.GetStringFormat("Web_Controller_License_TextTemplate_SystemInfos", LocalizedStrings.GetString("Web_Controller_License_TextTemplate_MachineName"), sys.MachineName, LocalizedStrings.GetString("Web_Controller_License_TextTemplate_OperatingSystem"), string.Format("{0} {1} {2}", sys.OperatingSystem, sys.OperatingSystemArchitecture, sys.OperatingSystemVersion), LocalizedStrings.GetString("Web_Controller_License_TextTemplate_Language"), sys.OperatingSystemLanguage.ToString(), LocalizedStrings.GetString("Web_Controller_License_TextTemplate_SystemManufacturer"), sys.Manufacturer, LocalizedStrings.GetString("Web_Controller_License_TextTemplate_SystemModel"), sys.Model, LocalizedStrings.GetString("Web_Controller_License_TextTemplate_Processors"), sys.Processors != null ? string.Join("|", sys.Processors) : null, LocalizedStrings.GetString("Web_Controller_License_TextTemplate_Memory"), string.Format("{0} MB", (int)(sys.Memory / 1048576d)), LocalizedStrings.GetString("Web_Controller_License_TextTemplate_AvailableOSMemory"), string.Format("{0} MB", (int)(sys.OSVisibleMemory / 1024d))); if (sys.VideoControllers != null) { foreach (var vc in sys.VideoControllers) { if (!string.IsNullOrEmpty(vc.Resolution)) { systemInfoStr += string.Format("\r\n{0}: {1}, {2}", LocalizedStrings.GetString("Web_Controller_License_TextTemplate_VideoController"), vc.Name, vc.Resolution); } } } var version = Assembly.GetExecutingAssembly().FullName .Split(',') .Single(_ => _.Contains("Version=")) .Split('=') .Last(); var productLicense = await LicenseMapper.GetLicense(); var content = string.Format(LocalizedStrings.GetString("Web_Controller_License_TextTemplate"), name, company, email, await LicenseMapper.GetMachineHash(), //On n'affiche plus le statut TrialVersion, on Licensed à la place. string.Format("{0} - {1}", productLicense.Status == WebLicenseStatus.TrialVersion ? WebLicenseStatus.Licensed : productLicense.Status, LocalizedStrings.GetStringFormat(productLicense.StatusReason, productLicense.StatusReasonParams?.Select(_ => _.ToString()).ToArray())), version, systemInfoStr ); return(Content(content)); }
public async Task <ActionResult> DeleteLicense() { if (Request.Cookies.AllKeys.Contains("token")) { _apiHttpClient.Token = Request.Cookies["token"].Value; } await LicenseMapper.SetLicense(null); return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
public async Task <ActionResult> SaveUserInfo(string name, string company, string email) { if (Request.Cookies.AllKeys.Contains("token")) { _apiHttpClient.Token = Request.Cookies["token"].Value; } await LicenseMapper.SetUserInformation(name, company, email); return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
public async Task ExportToExcel(string GridModel, string gridId, int id, string process, int?userId) { ExcelExport exp = new ExcelExport(); GridProperties obj = (GridProperties)Syncfusion.JavaScript.Utils.DeserializeToModel(typeof(GridProperties), GridModel); //Clear if there are any filter columns //syncfusion bug in exporting while in filter mode obj.FilterSettings.FilteredColumns.Clear(); grid = gridId; count = 0; var usersRolesLanguages = await _applicationUsersService.GetUsersAndRolesAndLanguages(); var users = new List <User>(); var userPools = await LicenseMapper.GetUserPools(); users = usersRolesLanguages.Users.Where(u => userPools.Any(p => p == u.UserId)).ToList(); if (gridId == "Qualification") { var lastTrainingPublications = await _prepareService.GetLastPublications((int)PublishModeEnum.Formation); var lastEvaluationPublications = await _prepareService.GetLastPublications((int)PublishModeEnum.Evaluation); var qualificationManageViewModel = await QualificationMapper.ToQualificationManageViewModel(lastTrainingPublications, lastEvaluationPublications, users, userId); var dataSource = qualificationManageViewModel.Qualifications.ToList(); qualificationViewModelData = qualificationManageViewModel.Qualifications.ToList(); var currentDate = DateTime.Today.ToShortDateString().Replace("/", "-"); obj.Columns[10].Field = "Result"; obj.ServerExcelQueryCellInfo = QueryCellInfo; exp.Export(obj, dataSource, LocalizedStrings.GetString("Qualification") + " " + currentDate + ".xlsx", ExcelVersion.Excel2013, false, false, "flat-saffron"); } if (gridId == "QualificationDetail") { var qualification = await _prepareService.GetQualification(id); // Retrieve all the action of the publication var actionSorted = qualification.Publication.PublishedActions.Distinct() .OrderBy(a => a.WBSParts, new WBSPartsComparer()) .ToList(); var qualificationSteps = GetQualificationStepAndChilds(qualification, actionSorted); var trainingPublications = await _prepareService.GetTrainingPublications(new[] { qualification.PublicationId }); var qualificationManageViewModel = QualificationMapper.ToQualificationViewModel(qualification, qualificationSteps, users, trainingPublications); var dataSource = qualificationManageViewModel.Steps.ToList(); qualificationStepViewModelData = qualificationManageViewModel.Steps.ToList(); var currentDate = DateTime.Today.ToShortDateString().Replace("/", "-"); obj.Columns[5].Field = HeadersHelper.IsQualified; obj.ServerExcelQueryCellInfo = QueryCellInfo; exp.Export(obj, dataSource, LocalizedStrings.GetString("QualificationDetail") + " " + process + " " + currentDate + ".xlsx", ExcelVersion.Excel2013, false, false, "flat-saffron"); } }
public async Task <JsonResult> CheckExpiredLicenseToNavigate(string targetAddress) { var redirect = await LicenseMapper.CheckLicenseStatus(WebLicenseStatus.OverageOfUsers, WebLicenseStatus.NotFound); if (targetAddress != null) { if (targetAddress.Contains("User") && await LicenseMapper.CheckLicenseStatus() != true) { redirect = false; } } return(Json(new { redirect = redirect }, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> GetUserWithIds(List <int> ids) { var usersRolesLanguages = await _applicationUsersService.GetUsersAndRolesAndLanguages(); var userPools = await LicenseMapper.GetUserPools(); var data = usersRolesLanguages.Users.Where(u => userPools.Any(p => p == u.UserId)).Select( u => new { Fullname = u.FullName, u.Username, u.UserId, IsChecked = ids != null ? ids.Contains(u.UserId) : false } ).ToList(); var jsonSerializer = new JavaScriptSerializer(); return(Json(jsonSerializer.Serialize(data))); }
/// <summary> /// Mapping users and roles to view model /// </summary> /// <returns></returns> private async Task <UserManageViewModel> GetData() { var license = await LicenseMapper.GetLicense(); ViewBag.ActivatedUsersCount = license?.UsersPool?.Count ?? 0; ViewBag.ActivatedUsersMax = license?.NumberOfUsers ?? 0; var(Users, Roles, Languages, Teams) = await _applicationUsersService.GetUsersAndRolesAndLanguages(); UserManageViewModel userManageModel = new UserManageViewModel(); var users = Users.Select(u => { var rolesInfo = GetRolesForUser(u, Roles); return(new UserViewModel { UserId = u.UserId, DefaultLanguageCode = u.DefaultLanguageCode, Username = u.Username, Firstname = u.Firstname, Name = u.Name, Email = u.Email, PhoneNumber = u.PhoneNumber, Roles = rolesInfo.Item1, RolesId = rolesInfo.Item2, Tenured = u.Tenured, TenuredDisplay = u.Tenured.HasValue? u.Tenured.Value? LocalizedStrings.GetString("Tenant") : LocalizedStrings.GetString("Interim") : "", Teams = u.Teams.Select(t => t.Name).ToList(), IsActive = license?.UsersPool?.Contains(u.UserId) == true ? true : false }); }); var allRoles = Roles.ToList(); var roleList = allRoles.Select(r => new RoleViewModel { RoleCode = r.RoleCode, ShortLabel = r.ShortLabel }); var allLanguages = Languages.ToList(); var languageList = allLanguages.Select(l => new LanguageViewModel { LanguageCode = l.LanguageCode, Label = l.Label }); userManageModel.RolesViewModel = roleList.ToList(); userManageModel.UsersViewModel = users.ToList(); userManageModel.LanguagesViewModel = languageList.ToList(); return(userManageModel); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { ITraceManager traceManager = DependencyResolver.Current.GetService(typeof(ITraceManager)) as ITraceManager; try { IAuthenticationService authenticationService = DependencyResolver.Current.GetService(typeof(IAuthenticationService)) as IAuthenticationService; ISecurityContext securityContext = DependencyResolver.Current.GetService(typeof(ISecurityContext)) as ISecurityContext; ILocalizationManager localizationManager = DependencyResolver.Current.GetService(typeof(ILocalizationManager)) as ILocalizationManager; if (securityContext == null) { traceManager.TraceWarning($"Security context can be retrieve from Unity. Skipping .."); return; } /*IPrincipal principal = filterContext.HttpContext.User; * ClaimsIdentity identity = principal?.Identity as ClaimsIdentity; * string username = identity?.Name; * if (string.IsNullOrEmpty(username)) * { * traceManager.TraceWarning($"Claim username not found. Skipping .."); * return; * }*/ var user = JwtTokenProvider.GetUserModel(filterContext.HttpContext.Request.Cookies["token"].Value); securityContext.CurrentUser = new SecurityUser(new User { Username = user.Username, Firstname = user.Firstname, Name = user.Name, RoleCodes = user.Roles.ToList() }); localizationManager.CurrentCulture = new CultureInfo(JwtTokenProvider.GetUserModelCurrentLanguage(filterContext.HttpContext.Request.Cookies["token"].Value)); filterContext.Controller.ViewBag.LicenseExpired = Task.Run(() => LicenseMapper.CheckLicenseIsExpired()).Result; //Refresh cookie if not idle filterContext.HttpContext.Response.SetAuthorizationCookie(user); //traceManager.TraceDebug($"Current user set to {username} inside security context"); base.OnActionExecuting(filterContext); } catch (Exception ex) { traceManager.TraceError(ex, $"Error while setting action context..."); } }
/// <summary> /// Delete user information /// </summary> /// <param name="key"></param> /// <returns></returns> public async Task <ActionResult> DeleteUser(int key) { if (Request.Cookies.AllKeys.Contains("token")) { _apiHttpClient.Token = Request.Cookies["token"].Value; } try { var(Users, Roles, Languages, Teams) = await _applicationUsersService.GetUsersAndRolesAndLanguages(); var userDelete = Users.FirstOrDefault(u => u.UserId == key); if (userDelete != null) { var license = await LicenseMapper.GetLicense(); if (license.UsersPool.Any(u => u == key)) { //Delete user from License userpool license.UsersPool.Remove(key); await CancelAndDisableUserRelatedActivity(new List <int> { key }); await LicenseMapper.SetLicense(license); } userDelete.IsDeleted = true; userDelete.MarkAsDeleted(); IEnumerable <User> editUser = new[] { userDelete }; await _applicationUsersService.SaveUsers(editUser); } var users = await GetData(); return(Json(users, JsonRequestBehavior.AllowGet)); } catch (InvalidOperationException ex) { var message = LocalizedStrings.GetString("UnableUsedUserDelete"); _traceManager.TraceError(ex, message); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, message)); } catch (Exception ex) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message)); } }
public async Task <ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return(View(model)); } var(users, roles, languages, teams) = await _applicationUsersService.GetUsersAndRolesAndLanguages(); var userModel = new JWT.UserModel(); var user = users.FirstOrDefault(_ => _.Username == model.Username); if (user != null) { userModel = user.ToUserModel(); if (!await LicenseMapper.CheckUserCanAccess(userModel)) { ModelState.AddModelError("", LocalizedStrings.GetString("VM_Authentication_Message_NotAuthorized")); return(View(model)); } } // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, change to shouldLockout: true var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout : false); switch (result) { case SignInStatus.Success: userModel.RememberMe = model.RememberMe; Response.SetAuthorizationCookie(userModel); return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe })); case SignInStatus.Failure: default: ModelState.AddModelError("", "Login ou password incorrect"); return(View(model)); } }
public async Task <LicenseViewModel> GetData() { if (Request.Cookies.AllKeys.Contains("token")) { _apiHttpClient.Token = Request.Cookies["token"].Value; } var model = new LicenseViewModel { //Prepare LicenseInfo LicenseInfo = new LicenseInfoViewModel { ActivatedUsers = new List <UserViewModel>() } }; //User information var userProvider = await LicenseMapper.GetUserInformation(); if (userProvider != null) { model.LicenseInfo.Name = userProvider.Username; model.LicenseInfo.Company = userProvider.Company; model.LicenseInfo.Email = userProvider.Email; } var license = await LicenseMapper.GetLicense(); if (license.Status != WebLicenseStatus.NotFound && license.Status != WebLicenseStatus.MachineHashMismatch) { model.LicenseFile = license; model.LicenseInfo.LicenseFile = license; model.LicenseInfo.LicenseMaxActivateUser = license.NumberOfUsers; model.LicenseInfo.LicenseTotalActivatedUsers = license.UsersPool.Count; model.LicenseInfo.ExpiredDate = license.ActivationDate.AddDays(license.TrialDays); model.LicenseInfo.Status = license.Status; model.LicenseInfo.StatusReason = license.StatusReason; //To display license information if ((model.LicenseInfo.Status != WebLicenseStatus.Licensed && DateTime.Now > model.LicenseInfo.ExpiredDate) || model.LicenseInfo.Status == WebLicenseStatus.Expired) { model.LicenseInfo.LicenseInformation = LocalizedStrings.GetString("Web_Controller_License_InfoLicenseExpired"); } else if (license.Status == WebLicenseStatus.OverageOfUsers) { model.LicenseInfo.LicenseInformation = LocalizedStrings.GetString("Web_Controller_License_InfoOverageOfUsers"); } else { model.LicenseInfo.LicenseInformation = LocalizedStrings.GetString("Web_Controller_License_InfoLicenseValid"); } if (model.LicenseInfo.LicenseTotalActivatedUsers != 0) { //collect activated users var usersRolesLanguages = await _applicationUsersService.GetUsersAndRolesAndLanguages(); var users = usersRolesLanguages.Users; model.LicenseInfo.ActivatedUsers = license.UsersPool .Where(userId => users.Any(_ => _.UserId == userId)) .Select(userId => users.Single(_ => _.UserId == userId)) .Select(user => new UserViewModel { UserId = user.UserId, FullName = user.FullName }).ToList(); } } model.LicenseInfo.IDMachine = await LicenseMapper.GetMachineHash(); model.LicenseInfo.Status = license.Status; model.LicenseInfo.StatusReason = LocalizedStrings.GetStringFormat(license.StatusReason, license.StatusReasonParams?.Select(_ => _.ToString()).ToArray()); //Email to kprocess model.LicenseInfo.EmailTarget = ActivationConstants.KProcessEmail; return(model); }
public async Task <ActionResult> SaveDefault() { if (Request.Cookies.AllKeys.Contains("token")) { _apiHttpClient.Token = Request.Cookies["token"].Value; } HttpContext.Response.StatusCode = (int)HttpStatusCode.OK; var uploadedLicenseFile = System.Web.HttpContext.Current.Request.Files["uploadLicense"]; var name = System.Web.HttpContext.Current.Request.Headers["name"]; var company = System.Web.HttpContext.Current.Request.Headers["company"]; var email = System.Web.HttpContext.Current.Request.Headers["email"]; await LicenseMapper.SetUserInformation(name, company, email); ProductLicenseInfo licenseInfo = null; try { using (System.IO.StreamReader reader = new System.IO.StreamReader(uploadedLicenseFile.InputStream)) { System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ProductLicenseInfo)); licenseInfo = (ProductLicenseInfo)serializer.Deserialize(reader); } } catch (Exception e) { _traceManager.TraceError(e, e.Message); HttpContext.Response.StatusDescription = $"{HttpStatusCode.BadRequest}"; return(Content(LocalizedStrings.GetString("Web_Controller_License_CantCheckLicense"))); } try { WebProductLicense license = await LicenseMapper.ActivateLicense(licenseInfo); if (license.Status == WebLicenseStatus.OverageOfUsers) { HttpContext.Response.StatusDescription = $"{HttpStatusCode.ExpectationFailed}"; return(Content(LocalizedStrings.GetStringFormat(license.StatusReason, license.StatusReasonParams?.Select(_ => _.ToString()).ToArray()))); } // Comment this part if you want to be able to save a expired license if (license.Status != WebLicenseStatus.Licensed && license.Status != WebLicenseStatus.TrialVersion) { HttpContext.Response.StatusDescription = $"{HttpStatusCode.Forbidden}"; return(Content(LocalizedStrings.GetStringFormat(license.StatusReason, license.StatusReasonParams?.Select(_ => _.ToString()).ToArray()))); } //First initialize of license, set UserPool to current Admin if (license.UsersPool.Count == 0) { //Get current user id - Admin var adminId = int.Parse(System.Web.HttpContext.Current.User.Identity.GetUserId()); license.UsersPool.Add(adminId); } await LicenseMapper.SetLicense(license); // TODO : Update license infos from the secured storage } catch (Exception e) { _traceManager.TraceError(e, e.Message); HttpContext.Response.StatusDescription = $"{HttpStatusCode.BadRequest}"; return(Content(LocalizedStrings.GetString("Web_Controller_License_LicenseInvalid"))); } HttpContext.Response.StatusDescription = $"{HttpStatusCode.OK}"; return(Content($"{HttpStatusCode.OK}")); }
public async Task <ActionResult> UpdateUserStatus(List <int> userIds, bool status) { if (Request.Cookies.AllKeys.Contains("token")) { _apiHttpClient.Token = Request.Cookies["token"].Value; } try { var license = await LicenseMapper.GetLicense(); if (license.Status == WebLicenseStatus.NotFound) { return(Json(new { Success = false, message = LocalizedStrings.GetString("Web_Controller_User_LicenseDoesntExist") }, JsonRequestBehavior.AllowGet)); } else if (license.Status == WebLicenseStatus.MachineHashMismatch) { return(Json(new { Success = false, message = LocalizedStrings.GetString("Web_Controller_User_LicenseMismatchesMachine") }, JsonRequestBehavior.AllowGet)); } //Check user maximum limit if (status == true) { if (license.UsersPool.Count >= license.NumberOfUsers) { return(Json(new { Success = false, message = LocalizedStrings.GetString("Web_Controller_User_OverageOfUsers") }, JsonRequestBehavior.AllowGet)); } } //Admin cannot deactivate his own Active status if (status == false && userIds.Any(u => u == int.Parse(System.Web.HttpContext.Current.User.Identity.GetUserId()))) { return(Json(new { Success = false, message = LocalizedStrings.GetString("Web_Controller_User_CantSelfDeactivate") }, JsonRequestBehavior.AllowGet)); } if (status) { foreach (var id in userIds) { license.UsersPool.Add(id); } } else { await CancelAndDisableUserRelatedActivity(userIds); foreach (var id in userIds) { license.UsersPool.Remove(id); } } await LicenseMapper.SetLicense(license); var users = await GetData(); var updateUsers = users.UsersViewModel; return(Json(new { Success = true, Users = updateUsers, activatedCount = license.UsersPool.Count() }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { var message = string.Join(" | ", ModelState.Values .SelectMany(v => v.Errors) .Select(e => e.ErrorMessage)); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message)); } }