public const int MAXUSERS = 50; // maximum # of users for a dropdown public static async Task <bool> IsLargeUserBaseAsync() { using (UserDefinitionDataProvider userDP = new UserDefinitionDataProvider()) { DataProviderGetRecords <UserDefinition> recs = await userDP.GetItemsAsync(0, 1, null, null); return(recs.Total > MAXUSERS); } }
public async Task UpdatePasswordExpiration(List <string> errorList) { long ticks = WebConfigHelper.GetValue <long>(YetaWF.Modules.Identity.Controllers.AreaRegistration.CurrentPackage.AreaName, "PasswordRenewal", new TimeSpan(0, 0, 0).Ticks); // 0 = indefinitely if (ticks <= 0) { return; // nothing to do } TimeSpan interval = new TimeSpan(ticks); // renewal interval DateTime oldestDate = DateTime.UtcNow.Subtract(interval); using (UserDefinitionDataProvider userDP = new UserDefinitionDataProvider()) { int offset = 0; const int CHUNK = 50; for (;;) { List <DataProviderFilterInfo> filters = null; filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo { Field = nameof(UserDefinition.UserStatus), Operator = "==", Value = UserStatusEnum.Approved }); filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo { Field = nameof(UserDefinition.NeedsNewPassword), Operator = "==", Value = false }); DataProviderGetRecords <UserDefinition> usersInfo = await userDP.GetItemsAsync(offset, CHUNK, null, filters); if (usersInfo.Data.Count == 0) { return; } foreach (UserDefinition user in usersInfo.Data) { bool forceUpdate = false; if (user.LastPasswordChangedDate != null && user.LastPasswordChangedDate < oldestDate) { forceUpdate = true; } else if (user.LastPasswordChangedDate == null && user.Created < oldestDate) { forceUpdate = true; } if (forceUpdate) { user.NeedsNewPassword = true; await userDP.UpdateItemAsync(user); Logging.AddLog($"Updated {user.Id} {user.UserName} - requires password"); } } offset += CHUNK; System.Threading.Thread.Sleep(5 * 1000); // wait some 5 seconds } } }
private GridDefinition GetGridModel() { return(new GridDefinition { ModuleGuid = Module.ModuleGuid, SettingsModuleGuid = Module.PermanentGuid, RecordType = typeof(BrowseItem), AjaxUrl = GetActionUrl(nameof(UsersBrowse_GridData)), DirectDataAsync = async(int skip, int take, List <DataProviderSortInfo> sort, List <DataProviderFilterInfo> filters) => { using (UserDefinitionDataProvider dataProvider = new UserDefinitionDataProvider()) { DataProviderGetRecords <UserDefinition> browseItems = await dataProvider.GetItemsAsync(skip, take, sort, filters, IncludeSuperuser : false); return new DataSourceResult { Data = (from s in browseItems.Data select new BrowseItem(Module, s)).ToList <object>(), Total = browseItems.Total }; } }, }); }
internal static GridDefinition GetGridAllUsersModel() { return(new GridDefinition() { RecordType = typeof(AllEntry), InitialPageSize = 10, AjaxUrl = Utility.UrlFor(typeof(AllowedUsersController), nameof(AllowedUsersController.AllowedUsersBrowse_GridData)), DirectDataAsync = async(int skip, int take, List <DataProviderSortInfo> sort, List <DataProviderFilterInfo> filters) => { using (UserDefinitionDataProvider userDP = new UserDefinitionDataProvider()) { DataProviderGetRecords <UserDefinition> browseItems = await userDP.GetItemsAsync(skip, take, sort, filters); return new DataSourceResult { Data = (from s in browseItems.Data select new AllowedUsersEditComponent.AllEntry(s)).ToList <object>(), Total = browseItems.Total }; } }, }); }
public async Task <string> RenderAsync(int model) { HtmlBuilder hb = new HtmlBuilder(); string type = PropData.GetAdditionalAttributeValue <string>("Force", null); if (type == "Grid" || (await IsLargeUserBaseAsync() && type != "DropDown")) { string hiddenId = UniqueId(); string allId = UniqueId(); string nameId = UniqueId(); string noUser = __ResStr("noUser", "(none)"); bool header = PropData.GetAdditionalAttributeValue("Header", true); UserIdUI ui = new UserIdUI { UserId = model, }; using (UserDefinitionDataProvider userDP = new UserDefinitionDataProvider()) { UserDefinition user = await userDP.GetItemByUserIdAsync(model); if (user == null) { ui.UserName = __ResStr("noUser", "(none)"); } else { ui.UserName = user.UserName; } } ui.AllUsers = GetGridAllUsersModel(header); ui.AllUsers.Id = allId; hb.Append($@" <div class='yt_yetawf_identity_userid t_large t_edit' id='{DivId}'> {await HtmlHelper.ForEditComponentAsync(Container, PropertyName, model, "Hidden", HtmlAttributes: new { id = hiddenId, __NoTemplate = true })}"); using (Manager.StartNestedComponent(FieldName)) { hb.Append($@" <div class='t_name'> {await HtmlHelper.ForDisplayAsync(ui, nameof(ui.UserName), HtmlAttributes: new { id = nameId })} {ImageHTML.BuildKnownIcon("#RemoveLight", title: __ResStr("ttClear", "Clear the current selection"), cssClass: "t_clear")} </div> {await HtmlHelper.ForLabelAsync(ui, nameof(ui.AllUsers))} {await HtmlHelper.ForDisplayAsync(ui, nameof(ui.AllUsers))}"); } hb.Append($@" </div>"); UserIdSetup setup = new UserIdSetup { GridAllId = ui.AllUsers.Id, HiddenId = hiddenId, NameId = nameId, NoUser = noUser, }; Manager.ScriptManager.AddLast($@"new YetaWF_Identity.UserIdEditComponent('{DivId}', {Utility.JsonSerialize(setup)});"); } else { hb.Append($@" <div class='yt_yetawf_identity_userid t_small t_edit'>"); using (UserDefinitionDataProvider userDP = new UserDefinitionDataProvider()) { List <DataProviderSortInfo> sorts = null; DataProviderSortInfo.Join(sorts, new DataProviderSortInfo { Field = nameof(UserDefinition.UserName), Order = DataProviderSortInfo.SortDirection.Ascending }); DataProviderGetRecords <UserDefinition> recs = await userDP.GetItemsAsync(0, MAXUSERS, sorts, null); List <SelectionItem <int> > list = (from u in recs.Data select new SelectionItem <int> { Text = u.UserName, Value = u.UserId, }).ToList(); list.Insert(0, new SelectionItem <int> { Text = __ResStr("select", "(select)"), Value = 0, }); hb.Append(await DropDownListIntComponent.RenderDropDownListAsync(this, model, list, null)); } hb.Append($@" </div>"); } return(hb.ToString()); }