public ProjectPermissionDto(ProjectPermissions permission) { if (permission != null) { ProjectPermissionSlug = permission.ProjectPermissionSlug; Name = permission.Name; } }
private IQueryable <Project> Projects(int userId, ProjectPermissions permissions) { return(Db.GetTable <Project>() .Join(ProjectUserInfo().Where(i => i.UserId == userId), p => p.Id, i => i.ProjectId, (p, i) => new Project { EndDate = p.EndDate, Id = p.Id, MaxTotalHours = p.MaxTotalHours, Name = p.Name, Permissions = i.UserPermissions, StartDate = p.StartDate, Status = p.Status }) .Where(p => (p.Permissions & permissions) != ProjectPermissions.None) .Where(p => p.Status == ProjectStatus.Active)); }
public async Task GrantGroup(string projectKey, string group, ProjectPermissions permission) { string requestUrl = UrlBuilder.FormatRestApiUrl(GRANT_GROUP_PERMISSION, null, projectKey, permission.ToString(), group); await _httpWorker.PutAsync<Object>(requestUrl, new Object()).ConfigureAwait(false); }
/// <summary> /// Determines the level of rights the user has on the SQL database /// </summary> public override ProjectPermissions GetPermissions() { ProjectPermissions permissions = new ProjectPermissions(); permissions.FullPermissions = false; Query query = this.CreateQuery("SELECT HAS_PERMS_BY_NAME(QUOTENAME(SCHEMA_NAME(schema_id)) " + "+ '.' + QUOTENAME(name), 'OBJECT', 'SELECT') AS have_select, name FROM sys.tables"); DataTable selectDt = Select(query); DataTable permissionsTable = new DataTable(); permissionsTable.Columns.Add("name", typeof(string)); // table name permissionsTable.Columns.Add("can_select", typeof(bool)); permissionsTable.Columns.Add("can_insert", typeof(bool)); permissionsTable.Columns.Add("can_update", typeof(bool)); permissionsTable.Columns.Add("can_delete", typeof(bool)); permissionsTable.Columns["name"].Unique = true; DataColumn[] primaryKeyColumns = new DataColumn[1]; primaryKeyColumns[0] = permissionsTable.Columns["name"]; permissionsTable.PrimaryKey = primaryKeyColumns; List<string> tableNames = new List<string>(); foreach (DataRow row in selectDt.Rows) { foreach (DataColumn dc in selectDt.Columns) { System.Diagnostics.Debug.Print(dc.ColumnName + " = " + row[dc.ColumnName].ToString()); } string tableName = row["name"].ToString(); tableNames.Add(tableName); permissionsTable.Rows.Add(tableName); System.Diagnostics.Debug.Print(""); } selectDt = new DataTable(); DataTable insertDt = new DataTable(); DataTable updateDt = new DataTable(); DataTable deleteDt = new DataTable(); foreach (string tableName in tableNames) { query = this.CreateQuery("SELECT HAS_PERMS_BY_NAME('" + tableName + "', 'OBJECT', 'INSERT');"); insertDt = Select(query); string value = insertDt.Rows[0][0].ToString(); DataRow dr = permissionsTable.Rows.Find(tableName); if (value == "1") { permissions.TablesWithInsertPermissions.Add(tableName); } #region Debug foreach (DataRow row in insertDt.Rows) { foreach (DataColumn dc in insertDt.Columns) { System.Diagnostics.Debug.Print(dc.ColumnName + " = " + row[dc.ColumnName].ToString()); } } #endregion // Debug } foreach (string tableName in tableNames) { query = this.CreateQuery("SELECT HAS_PERMS_BY_NAME('" + tableName + "', 'OBJECT', 'UPDATE');"); updateDt = Select(query); string value = updateDt.Rows[0][0].ToString(); DataRow dr = permissionsTable.Rows.Find(tableName); if (value == "1") { permissions.TablesWithUpdatePermissions.Add(tableName); } #region Debug foreach (DataRow row in updateDt.Rows) { foreach (DataColumn dc in updateDt.Columns) { System.Diagnostics.Debug.Print(dc.ColumnName + " = " + row[dc.ColumnName].ToString()); } } #endregion // Debug } foreach (string tableName in tableNames) { query = this.CreateQuery("SELECT HAS_PERMS_BY_NAME('" + tableName + "', 'OBJECT', 'DELETE');"); deleteDt = Select(query); string value = deleteDt.Rows[0][0].ToString(); DataRow dr = permissionsTable.Rows.Find(tableName); if (value == "1") { permissions.TablesWithDeletePermissions.Add(tableName); } #region Debug foreach (DataRow row in deleteDt.Rows) { foreach (DataColumn dc in deleteDt.Columns) { System.Diagnostics.Debug.Print(dc.ColumnName + " = " + row[dc.ColumnName].ToString()); } } #endregion // Debug } foreach (string tableName in tableNames) { query = this.CreateQuery("SELECT HAS_PERMS_BY_NAME('" + tableName + "', 'OBJECT', 'SELECT');"); selectDt = Select(query); string value = selectDt.Rows[0][0].ToString(); DataRow dr = permissionsTable.Rows.Find(tableName); if (value == "1") { permissions.TablesWithSelectPermissions.Add(tableName); } #region Debug foreach (DataRow row in selectDt.Rows) { foreach (DataColumn dc in selectDt.Columns) { System.Diagnostics.Debug.Print(dc.ColumnName + " = " + row[dc.ColumnName].ToString()); } } #endregion // Debug } List<string> metaTableNames = new List<string>(); List<string> formDataTableNames = new List<string>(); foreach (string tableName in tableNames) { if (tableName.StartsWith("meta")) { metaTableNames.Add(tableName); } } permissions.CanDeleteRowsInMetaTables = true; permissions.CanInsertRowsInMetaTables = true; permissions.CanSelectRowsInMetaTables = true; permissions.CanUpdateRowsInMetaTables = true; foreach (string metaTableName in metaTableNames) { DataRow row = permissionsTable.Rows.Find(metaTableName); if (permissions.CanDeleteRowsInMetaTables) { permissions.CanDeleteRowsInMetaTables = permissions.TablesWithDeletePermissions.Contains(metaTableName); } if (permissions.CanInsertRowsInMetaTables) { permissions.CanInsertRowsInMetaTables = permissions.TablesWithInsertPermissions.Contains(metaTableName); } if (permissions.CanSelectRowsInMetaTables) { permissions.CanSelectRowsInMetaTables = permissions.TablesWithSelectPermissions.Contains(metaTableName); } if (permissions.CanUpdateRowsInMetaTables) { permissions.CanUpdateRowsInMetaTables = permissions.TablesWithUpdatePermissions.Contains(metaTableName); } } return permissions; }
public async Task GrantGroup(string projectKey, string group, ProjectPermissions permission) { string requestUrl = UrlBuilder.FormatRestApiUrl(GRANT_GROUP_PERMISSION, null, projectKey, permission.ToString(), group); await _httpWorker.PutAsync <Object>(requestUrl, new Object()).ConfigureAwait(false); }
private bool CheckAndSetPermissions() { permissions = this.view.Project.CollectedData.GetDbDriver().GetPermissions(); if (permissions == null || permissions.FullPermissions == true) { return true; } if (permissions.CanSelectRowsInMetaTables == false) { return false; } canInsertRecords = true; if (!permissions.TablesWithInsertPermissions.Contains(view.TableName)) { canInsertRecords = false; } if (canInsertRecords) { foreach (Page page in view.Pages) { if (!permissions.TablesWithInsertPermissions.Contains(page.TableName)) { canInsertRecords = false; break; } } } canUpdateRecords = true; if (!permissions.TablesWithUpdatePermissions.Contains(view.TableName)) { canUpdateRecords = false; } if (canInsertRecords) { foreach (Page page in view.Pages) { if (!permissions.TablesWithUpdatePermissions.Contains(page.TableName)) { canUpdateRecords = false; break; } } } return true; }
/// <summary> /// Obtains information for project to be opened /// and displays it in the treenode, explorer /// </summary> private void OpenProject(Project project) { Epi.Data.IDbDriver db = project.CollectedData.GetDbDriver(); projectPermissions = db.GetPermissions(); if (!CheckAndSetPermissions()) { Epi.Windows.MsgBox.ShowInformation(SharedStrings.INADEQUATE_PERMISSIONS_ACCESS); return; } else if (this.openForViewingOnly) { Epi.Windows.MsgBox.ShowInformation(SharedStrings.INADEQUATE_PERMISSIONS_MODIFY ); this.projectExplorer.OpenForViewingOnly = true; } else { this.projectExplorer.OpenForViewingOnly = false; } canvas.HideUpdateStart(SharedStrings.OPENING_PROJECT); canvas.OpenForViewingOnly = this.openForViewingOnly; mediator.Project = project; if (this.Interpreter == null) { Assembly a = Assembly.Load(project.EnterMakeviewIntepreter); Type myType = a.GetType(project.EnterMakeviewIntepreter + ".EpiInterpreterParser"); this.Interpreter = (IEnterInterpreter)Activator.CreateInstance(myType, new object[] { this.mediator }); this.Interpreter.Host = this.mediator; } EnableFeatures(); try { bool containsData = false; foreach (View view in mediator.Project.Views) { if (mediator.Project.CollectedData.TableExists(view.TableName)) { containsData = true; } } if (containsData == false) { mediator.Project.Metadata.RemovePageOutlierFields(); } projectExplorer.LoadProject(project); OnProjectAccessed(project); //try //{ // Configuration config = Configuration.GetNewInstance(); // if (config.Settings.Republish_IsRepbulishable == true) // { // if (!string.IsNullOrWhiteSpace(this.CurrentView.WebSurveyId)) // { // mnuPublishToWeb.DropDownItems[0].Enabled = false; // mnuPublishToWeb.DropDownItems[1].Enabled = true; // mnuPublishToWeb.DropDownItems[2].Enabled = true; // mnuPublishToWeb.DropDownItems[3].Enabled = true; // mnuPublishToWeb.DropDownItems[4].Enabled = true; // } // else // { // mnuPublishToWeb.DropDownItems[0].Enabled = true; // mnuPublishToWeb.DropDownItems[1].Enabled = false; // mnuPublishToWeb.DropDownItems[2].Enabled = false; // mnuPublishToWeb.DropDownItems[3].Enabled = false; // mnuPublishToWeb.DropDownItems[4].Enabled = false; // } // } // else // { // mnuPublishToWeb.DropDownItems[0].Enabled = true; // mnuPublishToWeb.DropDownItems[1].Enabled = false; // mnuPublishToWeb.DropDownItems[2].Enabled = false; // mnuPublishToWeb.DropDownItems[3].Enabled = false; // mnuPublishToWeb.DropDownItems[4].Enabled = false; // } //} //catch (Exception ex) //{ // mnuPublishToWeb.DropDownItems[0].Enabled = true; // mnuPublishToWeb.DropDownItems[1].Enabled = false; // mnuPublishToWeb.DropDownItems[2].Enabled = false; // mnuPublishToWeb.DropDownItems[3].Enabled = false; // mnuPublishToWeb.DropDownItems[4].Enabled = false; //} this.SetPublishMenuItems(this.CurrentView); SetDataTableMenuItems(); mediator.InitialData = new InitialCollectedData(project.CollectedData); canvas.HideUpdateEnd(); } finally { canvas.WaitPanelForceHide(); } if (this.openForViewingOnly) { canvas.EnablePagePanel(false); } else { canvas.EnablePagePanel(true); } }
public SetProject(string name, ProjectPermissions permissions) { Name = name; Permissions = permissions; }
public SetProject(string name, ProjectPermissions permissions) { Name = name; Permissions = permissions; }