Beispiel #1
0
 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));
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        /// <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;
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #8
0
 public SetProject(string name, ProjectPermissions permissions)
 {
     Name        = name;
     Permissions = permissions;
 }
Beispiel #9
0
		public SetProject(string name, ProjectPermissions permissions)
		{
			Name = name;
			Permissions = permissions;
		}