@******************************************************************************************************* // Users.cshtml - Gbtc // // Copyright © 2016, Grid Protection Alliance. All Rights Reserved. // // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See // the NOTICE file distributed with this work for additional information regarding copyright ownership. // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this // file except in compliance with the License. You may obtain a copy of the License at: // // http://opensource.org/licenses/MIT // // Unless agreed to in writing, the subject software distributed under the License is distributed on an // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the // License for the specific language governing permissions and limitations. // // Code Modification History: // ---------------------------------------------------------------------------------------------------- // 03/03/2016 - J. Ritchie Carroll // Generated original version of source code. // //****************************************************************************************************** // To use in an ASP.NET destination project, include a Users.cshtml view with following content: // // @using GSF.Web // @section StyleSheets{@Html.Raw(ViewBag.StyleSheetsSection?.ToString())} // @{ViewBag.HelpTarget = Url.Action("Help", "Main");} // @Html.RenderResource("GSF.Web.Security.Views.Users.cshtml") // @section Scripts{@Html.Raw(ViewBag.ScriptsSection?.ToString())} // //****************************************************************************************************** // To use in a self-hosted web project, include a Users.cshtml view with following content: // // @using GSF.Web.Model // @inherits ExtendedTemplateBase // @section StyleSheets{@Html.Raw(ViewBag.StyleSheetsSection.ToString())} // @{Layout = "Layout.cshtml";} // @Html.RenderResource("GSF.Web.Security.Views.Users.cshtml") // @section Scripts{@Html.Raw(ViewBag.ScriptsSection.ToString())} // //*****************************************************************************************************@ @using GSF.Configuration @using GSF.Data.Model @using GSF.Security @using GSF.Security.Model @using GSF.Web.Model @using GSF.Web.Security @inherits ExtendedTemplateBase @section StyleSheets{ } @{ // Layout will depend on rendering environment, so do not specify one DataContext dataContext = ViewBag.DataContext; ViewBag.Title = "Users"; ViewBag.ShowSearchFilter = true; // Define column headers, use null for field name to make column non-sortable ViewBag.HeaderColumns = new[] { // { "Field", "Label", "Classes" } new[] { "FirstName", "First Name", "text-center valign-middle" }, new[] {"LastName", "Last Name", "text-center valign-middle"}, new[] { null, "User Name", "text-center valign-middle"}, new[] { "UseADAuthentication", "Is AD User", "text-center" }, new[] { "CreatedOn", "Date Added", "text-center" }, new[] { null, "User Roles", "text-center valign-middle" } }; if (ViewBag.HelpTarget == null) { ViewBag.HelpTarget = "Help.cshtml"; } // Make sure default settings exist ConfigurationFile config = ConfigurationFile.Current; CategorizedSettingsElementCollection settings = config.Settings[SecurityProviderBase.DefaultSettingsCategory]; settings.Add("ApplicationName", SecurityProviderBase.DefaultApplicationName, "Name of the application being secured as defined in the backend security data store."); settings.Add("PasswordRequirementsRegex", AdoSecurityProvider.DefaultPasswordRequirementsRegex, "Regular expression used to validate new passwords for database users."); settings.Add("PasswordRequirementsError", AdoSecurityProvider.DefaultPasswordRequirementsError, "Error message to be displayed when new database user password fails regular expression test."); // Get configured settings string applicationName = settings["ApplicationName"].ValueAs(SecurityProviderBase.DefaultApplicationName); string passwordRequirementsRegex = settings["PasswordRequirementsRegex"].ValueAs(AdoSecurityProvider.DefaultPasswordRequirementsRegex); string passwordRequirementsError = settings["PasswordRequirementsError"].ValueAs(AdoSecurityProvider.DefaultPasswordRequirementsError); ViewBag.BodyRows = BodyRows().ToString(); ViewBag.AddNewEditDialog = AddNewEditDialog(dataContext, passwordRequirementsRegex, passwordRequirementsError).ToString(); ViewBag.AddNewEditTitle = "User"; } @helper BodyRows() { } @helper AccountValidationFeedback() {
} @helper AddNewEditDialog(DataContext dataContext, string passwordRequirementsRegex, string passwordRequirementsError) {
@Raw(dataContext.AddInputField("Name", fieldLabel: "Name" + AccountValidationFeedback().ToString().Trim(), customDataBinding: "attr: {'acct-valid': validateAccount($data), 'autocomplete': 'off'}", initialFocus: true))
@* Adding actual UseADAuthentication field check-box, but hidden, to pick-up any model based field initializers *@
@Raw(dataContext.AddCheckBoxField("UseADAuthentication"))
@* Adding radio buttons bound to virtual UseDBAuthentication that models negated state of UseADAuthentication field for simplified dependency field initialization *@
@Raw(dataContext.AddInputField("Password", "password", dependencyFieldName: "UseDBAuthentication"))
@Raw(dataContext.AddInputField("FirstName")) @Raw(dataContext.AddInputField("LastName"))
@Raw(dataContext.AddInputField("Phone", dependencyFieldName: "UseDBAuthentication"))
@Raw(dataContext.AddInputField("Email"))
@Raw(dataContext.AddDateField("ChangePasswordOn", dependencyFieldName: "UseDBAuthentication")) @{ dataContext.AddPageDefinedFieldInitialization("Password", "\"\"", /* RegEx Pattern: */ passwordRequirementsRegex, /* Error Message: */ passwordRequirementsError); dataContext.AddPageDefinedFieldInitialization("ChangePasswordOn", "(new Date()).addDays(90)"); }
@Raw(dataContext.AddCheckBoxField("LockedOut"))
} @Html.RenderResource("GSF.Web.Model.Views.PagedViewModel.cshtml") @section Scripts { } @{ ViewBag.StyleSheetsSection = RenderSection("StyleSheets").ToString(); ViewBag.ScriptsSection = RenderSection("Scripts").ToString(); }