Beispiel #1
0
        public virtual void Rename(long id)
        {
            target(UpdateName, id);
            SiteRole role = roleService.GetById(id);

            set("r.Name", role.Name);
        }
Beispiel #2
0
        public async Task <IList <ISiteRole> > GetRolesBySite(
            int siteId,
            string searchInput,
            int pageNumber,
            int pageSize,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            IList <ISiteRole> roles = new List <ISiteRole>();

            using (DbDataReader reader = await dbRoles.GetPage(
                       siteId,
                       searchInput,
                       pageNumber,
                       pageSize,
                       cancellationToken))
            {
                while (reader.Read())
                {
                    SiteRole role = new SiteRole();
                    role.LoadFromReader(reader);
                    role.MemberCount = Convert.ToInt32(reader["MemberCount"]);

                    roles.Add(role);
                }
            }

            return(roles);
        }
        /// <summary>
        /// Update existing Role
        /// </summary>
        /// <param name="role"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <IdentityResult> UpdateAsync(SiteRole role, CancellationToken cancellationToken)
        {
            try
            {
                using (var conn = new SqlConnection(_config.GetConnectionString("DefaultConnection")))
                {
                    await conn.OpenAsync(cancellationToken);

                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.Connection  = conn;
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.CommandText = "identity_UpdateRole";

                        cmd.Parameters.AddWithValue("@Id", role.Id);
                        cmd.Parameters.AddWithValue("@Name", role.Name);
                        cmd.Parameters.AddWithValue("@NormalizedName", role.NormalizedName);
                        cmd.Parameters.AddWithValue("@Description", role.Description ?? "");

                        await cmd.ExecuteNonQueryAsync(cancellationToken);

                        return(IdentityResult.Success);
                    }
                }
            }
            catch (Exception ex)
            {
                return(IdentityResult.Failed(new IdentityError {
                    Code = ex.HResult.ToString(), Description = ex.Message
                }));
            }
        }
Beispiel #4
0
 public void Create(SiteRole role)
 {
     role.Id             = role.Name.Replace(" ", "");
     role.NormalizedName = role.Name.ToUpper();
     _dbContext.SiteRoles.Add(role);
     _dbContext.SaveChanges();
 }
        public async Task UpdateRole(
            ISiteRole role,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            ThrowIfDisposed();
            cancellationToken.ThrowIfCancellationRequested();

            if (role == null)
            {
                throw new ArgumentException("role cannot be null");
            }
            if (role.SiteId == Guid.Empty)
            {
                throw new ArgumentException("SiteId must be provided");
            }
            if (role.Id == Guid.Empty)
            {
                throw new ArgumentException("Id must be provided");
            }

            //await EnsureProjectId().ConfigureAwait(false);
            var projectId = role.SiteId.ToString();

            var siteRole = SiteRole.FromISiteRole(role);

            await roleCommands.UpdateAsync(
                projectId,
                siteRole.Id.ToString(),
                siteRole,
                cancellationToken).ConfigureAwait(false);
        }
Beispiel #6
0
        public async Task <IList <ISiteRole> > GetRolesBySite(
            int siteId,
            string searchInput,
            int pageNumber,
            int pageSize)
        {
            if (multiTenantOptions.UseRelatedSitesMode)
            {
                siteId = multiTenantOptions.RelatedSiteId;
            }

            IList <ISiteRole> roles = new List <ISiteRole>();

            using (DbDataReader reader = dbRoles.GetPage(siteId, searchInput, pageNumber, pageSize))
            {
                while (reader.Read())
                {
                    SiteRole role = new SiteRole();
                    role.LoadFromReader(reader);
                    role.MemberCount = Convert.ToInt32(reader["MemberCount"]);

                    roles.Add(role);
                }
            }

            return(roles);
        }
Beispiel #7
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,SiteRoleName")] SiteRole siteRole)
        {
            if (id != siteRole.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(siteRole);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SiteRoleExists(siteRole.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(siteRole));
        }
        /// <summary>
        /// Persists a new instance of Role. Returns true on success.
        /// when a role is created displayname corresponds to rolename
        /// but rolename can never change since it is used in a cookies and coded
        /// into security checks in some cases
        /// so subsequent changes to rolename really only effect displayname
        /// ie for localization or customization
        /// to really change a rolename you can delete the role and create a new one with the desired name
        /// some specific required system roles (Admin, Content Administrators)
        /// are also not allowed to be deleted
        /// </summary>
        /// <returns></returns>
        public async Task CreateRole(
            ISiteRole role,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            ThrowIfDisposed();
            cancellationToken.ThrowIfCancellationRequested();

            if (role == null)
            {
                throw new ArgumentException("role cannot be null");
            }
            if (role.SiteId == Guid.Empty)
            {
                throw new ArgumentException("SiteId must be provided");
            }
            if (role.Id == Guid.Empty)
            {
                throw new ArgumentException("Id must be provided");
            }

            var siteRole = SiteRole.FromISiteRole(role);

            if (siteRole.NormalizedRoleName.Length == 0)
            {
                siteRole.NormalizedRoleName = siteRole.RoleName;
            }
            dbContext.Roles.Add(siteRole);

            int rowsAffected = await dbContext.SaveChangesAsync(cancellationToken)
                               .ConfigureAwait(false);
        }
        public async Task UpdateRole(
            ISiteRole role,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            ThrowIfDisposed();
            cancellationToken.ThrowIfCancellationRequested();
            if (role == null)
            {
                throw new ArgumentException("role cannot be null");
            }
            if (role.SiteId == Guid.Empty)
            {
                throw new ArgumentException("SiteId must be provided");
            }
            if (role.Id == Guid.Empty)
            {
                throw new ArgumentException("Id must be provided");
            }

            var siteRole = SiteRole.FromISiteRole(role);

            bool tracking = dbContext.ChangeTracker.Entries <SiteRole>().Any(x => x.Entity.Id == siteRole.Id);

            if (!tracking)
            {
                dbContext.Roles.Update(siteRole);
            }

            int rowsAffected = await dbContext.SaveChangesAsync(cancellationToken)
                               .ConfigureAwait(false);
        }
Beispiel #10
0
        public async Task <bool> EnsureRequiredRoles(ISiteSettings site)
        {
            bool result = true;

            bool exists = await userRepo.RoleExists(site.SiteId, "Admins", CancellationToken);

            if (!exists)
            {
                SiteRole adminRole = new SiteRole();
                adminRole.DisplayName = "Admins";
                //adminRole.DisplayName = "Administrators";
                adminRole.SiteId   = site.SiteId;
                adminRole.SiteGuid = site.SiteGuid;
                result             = await userRepo.SaveRole(adminRole, CancellationToken.None);

                adminRole.DisplayName = "Administrators";
                result = await userRepo.SaveRole(adminRole, CancellationToken.None);
            }

            exists = await userRepo.RoleExists(site.SiteId, "Role Admins", CancellationToken);

            if (!exists)
            {
                SiteRole roleAdminRole = new SiteRole();
                roleAdminRole.DisplayName = "Role Admins";
                roleAdminRole.SiteId      = site.SiteId;
                roleAdminRole.SiteGuid    = site.SiteGuid;
                result = await userRepo.SaveRole(roleAdminRole, CancellationToken.None);

                roleAdminRole.DisplayName = "Role Administrators";
                result = await userRepo.SaveRole(roleAdminRole, CancellationToken.None);
            }

            exists = await userRepo.RoleExists(site.SiteId, "Content Administrators", CancellationToken);

            if (!exists)
            {
                SiteRole contentAdminRole = new SiteRole();
                contentAdminRole.DisplayName = "Content Administrators";
                contentAdminRole.SiteId      = site.SiteId;
                contentAdminRole.SiteGuid    = site.SiteGuid;
                result = await userRepo.SaveRole(contentAdminRole, CancellationToken.None);
            }

            exists = await userRepo.RoleExists(site.SiteId, "Authenticated Users", CancellationToken);

            if (!exists)
            {
                SiteRole authenticatedUserRole = new SiteRole();
                authenticatedUserRole.DisplayName = "Authenticated Users";
                authenticatedUserRole.SiteId      = site.SiteId;
                authenticatedUserRole.SiteGuid    = site.SiteGuid;
                result = await userRepo.SaveRole(authenticatedUserRole, CancellationToken.None);
            }



            return(result);
        }
Beispiel #11
0
        public ActionResult DeleteConfirmed(int id)
        {
            SiteRole siteRole = db.SiteRoles.Find(id);

            db.SiteRoles.Remove(siteRole);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Beispiel #12
0
        public IList GetRoles()
        {
            if (_rolesAll != null)
            {
                return(_rolesAll);
            }
            IList roles = new SiteRole().findAll();

            return(roles);
        }
Beispiel #13
0
 public ActionResult Edit([Bind(Include = "SiteRoleId,SiteRoleName")] SiteRole siteRole)
 {
     if (ModelState.IsValid)
     {
         db.Entry(siteRole).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(siteRole));
 }
Beispiel #14
0
        public async Task <IActionResult> Create([Bind("Id,SiteRoleName")] SiteRole siteRole)
        {
            if (ModelState.IsValid)
            {
                _context.Add(siteRole);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(siteRole));
        }
Beispiel #15
0
        public ActionResult Create([Bind(Include = "SiteRoleId,SiteRoleName")] SiteRole siteRole)
        {
            if (ModelState.IsValid)
            {
                db.SiteRoles.Add(siteRole);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(siteRole));
        }
Beispiel #16
0
        public async Task <ISiteRole> FetchRole(
            Guid roleId,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            SiteRole item
                = await dbContext.Roles.SingleOrDefaultAsync(
                      x => x.Id == roleId
                      , cancellationToken)
                  .ConfigureAwait(false);

            return(item);
        }
Beispiel #17
0
        public async Task <ISiteRole> FetchRole(
            Guid siteId,
            string roleName,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            SiteRole item
                = await dbContext.Roles.SingleOrDefaultAsync(
                      x => x.SiteId == siteId && (x.RoleName == roleName || x.NormalizedRoleName == roleName)
                      , cancellationToken)
                  .ConfigureAwait(false);

            return(item);
        }
Beispiel #18
0
        private Boolean shouldApprove(IUser objUser)
        {
            User user = (User)objUser;

            if (SiteRole.IsInAdminGroup(user.RoleId))
            {
                return(false);
            }

            ContentSubmitter s = ContentSubmitter.find("User.Id=" + user.Id + " and AppId=" + ctx.app.Id).first();

            return(s == null);
        }
Beispiel #19
0
        public async Task <ISiteRole> FetchRole(int roleId)
        {
            using (DbDataReader reader = dbRoles.GetById(roleId))
            {
                if (reader.Read())
                {
                    SiteRole role = new SiteRole();
                    role.LoadFromReader(reader);
                    return(role);
                }
            }

            return(null);
        }
Beispiel #20
0
        // GET: SiteRoles/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SiteRole siteRole = db.SiteRoles.Find(id);

            if (siteRole == null)
            {
                return(HttpNotFound());
            }
            return(View(siteRole));
        }
        public async Task <IActionResult> RoleEdit(RoleViewModel model, int returnPageNumber = 1)
        {
            ISiteContext selectedSite;

            // only server admin site can edit other sites settings
            if ((model.SiteId != Guid.Empty) && (model.SiteId != siteManager.CurrentSite.Id) && (siteManager.CurrentSite.IsServerAdminSite))
            {
                selectedSite = await siteManager.Fetch(model.SiteId) as ISiteContext;

                ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, sr["{0} - Edit Role"], selectedSite.SiteName);
            }
            else
            {
                selectedSite      = siteManager.CurrentSite;
                ViewData["Title"] = sr["Edit Role"];
            }

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            string successFormat;
            var    role = SiteRole.FromISiteRole(model);

            if (model.Id == Guid.Empty)
            {
                var exists = await RoleManager.RoleExistsAsync(model.RoleName);

                if (exists)
                {
                    ModelState.AddModelError("roleerror", sr["The role name is already in use."]);
                    return(View(model));
                }

                role.SiteId   = selectedSite.Id;
                successFormat = sr["The role <b>{0}</b> was successfully created."];
                await RoleManager.CreateAsync(role);
            }
            else
            {
                successFormat = sr["The role <b>{0}</b> was successfully updated."];
                await RoleManager.UpdateAsync(role);
            }

            this.AlertSuccess(string.Format(successFormat, role.RoleName), true);

            return(RedirectToAction("Index", new { siteId = selectedSite.Id, pageNumber = returnPageNumber }));
        }
        //public int GetRoleMemberCount(int roleId)
        //{
        //    // TODO: implement actual select count from db
        //    // this is works but is not ideal
        //    int count = 0;
        //    using (DbDataReader reader = dbRoles.GetRoleMembers(roleId))
        //    {
        //        while (reader.Read())
        //        {
        //            count += 1;
        //        }
        //    }

        //    return count;

        //}

        public async Task <ISiteRole> FetchRole(int roleId, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            using (DbDataReader reader = await dbRoles.GetById(roleId))
            {
                if (reader.Read())
                {
                    SiteRole role = new SiteRole();
                    role.LoadFromReader(reader);
                    return(role);
                }
            }

            return(null);
        }
Beispiel #23
0
        private void bindRoleLine(IBlock block, SiteRole role, String lbl)
        {
            block.Set(lbl + ".Name", role.Name);
            block.Set(lbl + ".RenameLink", to(Rename, role.Id));

            String deleteLink = "";

            if (role.Id != SiteRole.Administrator.Id && role.Id != SiteRole.NormalMember.Id && role.Id != SiteRole.Guest.Id)
            {
                deleteLink = string.Format(" <span href='{0}' class='deleteCmd'>" + lang("delete") + "</span>", to(Delete, role.Id));
            }
            block.Set(lbl + ".DeleteLink", deleteLink);

            block.Next();
        }
Beispiel #24
0
        public async Task <ISiteRole> FetchRole(int siteId, string roleName)
        {
            SiteRole role = null;

            using (DbDataReader reader = await dbRoles.GetByName(siteId, roleName))
            {
                while (reader.Read())
                {
                    role = new SiteRole();
                    role.LoadFromReader(reader);
                }
            }

            return(role);
        }
        public void CheckLogin()
        {
            if (SiteRole.IsInAdminGroup(ctx.viewer.obj.RoleId) == false)
            {
                echoRedirect(lang("exNoPermission"));
                return;
            }

            if (config.Instance.Site.LoginNeedImgValidation)
            {
                if (Html.Captcha.CheckError(ctx))
                {
                    run(Login);
                    return;
                }
            }

            String name = ctx.Post("Name");
            String pwd  = ctx.Post("Password1");

            if (ctx.viewer.obj.Name.Equals(name) == false || userService.IsNamePwdCorrect(name, pwd) == null)
            {
                errors.Add(lang("exUserNamePwdError"));
            }

            if (ctx.HasErrors)
            {
                logService.Add((User)ctx.viewer.obj, SiteLogString.LoginError(), ctx.Ip, SiteLogCategory.Login);
                run(Login);
                return;
            }

            AdminSecurityUtils.SetSession(ctx);
            logService.Add((User)ctx.viewer.obj, SiteLogString.LoginOk(), ctx.Ip, SiteLogCategory.Login);

            String returnUrl = ctx.Post("returnUrl");

            returnUrl = returnUrl.Replace("&amp;", "&");
            if (strUtil.IsNullOrEmpty(returnUrl))
            {
                //redirectUrl( t2( new DashboardController().Index ) );
                redirectUrl(t2(Welcome));
            }
            else
            {
                redirectUrl(returnUrl);
            }
        }
        public async Task <ISiteRole> FetchRole(int siteId, string roleName, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            SiteRole role = null;

            using (DbDataReader reader = await dbRoles.GetByName(siteId, roleName))
            {
                if (reader.Read())
                {
                    role = new SiteRole();
                    role.LoadFromReader(reader);
                }
            }

            return(role);
        }
Beispiel #27
0
        public virtual void UpdateName(long id)
        {
            SiteRole role   = roleService.GetById(id);
            String   target = ctx.Post("Name");

            if (strUtil.IsNullOrEmpty(target))
            {
                errors.Add(lang("exName"));
                run(Rename, id);
                return;
            }
            role.Name = target;
            roleService.UpdateSiteRole(role);
            log(SiteLogString.UpdateSiteRoleName(), role);

            echoToParentPart(lang("opok"));
        }
Beispiel #28
0
        private String getLoginJsonString()
        {
            User user = ctx.viewer.obj as User;

            Boolean isViewerOwnerSame = (ctx.owner.Id == ctx.viewer.Id && ctx.owner.obj.GetType() == ctx.viewer.obj.GetType());
            Boolean isAlertActivation = config.Instance.Site.EnableEmail && config.Instance.Site.AlertActivation;

            Dictionary <String, object> dic = new Dictionary <string, object>();

            Dictionary <String, object> viewer = new Dictionary <string, object>();

            viewer.Add("Id", user.Id);
            viewer.Add("IsLogin", ctx.viewer.IsLogin);
            viewer.Add("IsAdministrator", ctx.viewer.IsAdministrator());
            viewer.Add("IsInAdminGroup", SiteRole.IsInAdminGroup(ctx.viewer.obj.RoleId));
            viewer.Add("HasPic", user.HasUploadPic());
            viewer.Add("EmailConfirm", user.IsEmailConfirmed == 1);
            viewer.Add("IsAlertActivation", isAlertActivation);
            viewer.Add("IsAlertUserPic", config.Instance.Site.AlertUserPic);

            Dictionary <String, object> objViewer = new Dictionary <string, object>();

            objViewer.Add("Id", user.Id);
            objViewer.Add("Name", user.Name);
            objViewer.Add("FriendlyUrl", user.Url);
            objViewer.Add("Url", Link.ToMember(user));
            objViewer.Add("PicMedium", user.PicMedium);

            viewer.Add("obj", objViewer);

            dic.Add("viewer", viewer);
            dic.Add("viewerOwnerSame", isViewerOwnerSame);

            Dictionary <String, object> owner = new Dictionary <string, object>();

            owner.Add("IsSite", ctx.owner.obj.GetType() == typeof(Site));
            owner.Add("Id", ctx.owner.Id);

            dic.Add("owner", owner);
            dic.Add("navInfo", loginNavInfo());
            dic.Add("online", getOnlineDic());

            return(JsonString.Convert(dic));
        }
Beispiel #29
0
        public IList <ISiteRole> GetRolesUserIsNotIn(
            int siteId,
            int userId)
        {
            if (multiTenantOptions.UseRelatedSitesMode)
            {
                siteId = multiTenantOptions.RelatedSiteId;
            }
            IList <ISiteRole> roles = new List <ISiteRole>();

            using (DbDataReader reader = dbRoles.GetRolesUserIsNotIn(siteId, userId))
            {
                SiteRole role = new SiteRole();
                role.LoadFromReader(reader);

                roles.Add(role);
            }
            return(roles);
        }
Beispiel #30
0
        public async Task <ISiteRole> FetchRole(int siteId, string roleName)
        {
            if (multiTenantOptions.UseRelatedSitesMode)
            {
                siteId = multiTenantOptions.RelatedSiteId;
            }
            SiteRole role = null;

            using (DbDataReader reader = dbRoles.GetByName(siteId, roleName))
            {
                if (reader.Read())
                {
                    role = new SiteRole();
                    role.LoadFromReader(reader);
                }
            }

            return(role);
        }
 /// <summary>
 /// Create a new SiteRole object.
 /// </summary>
 /// <param name="roleID">Initial value of RoleID.</param>
 /// <param name="roleName">Initial value of RoleName.</param>
 /// <param name="roleRefName">Initial value of RoleRefName.</param>
 public static SiteRole CreateSiteRole(int roleID, string roleName, string roleRefName)
 {
     SiteRole siteRole = new SiteRole();
     siteRole.RoleID = roleID;
     siteRole.RoleName = roleName;
     siteRole.RoleRefName = roleRefName;
     return siteRole;
 }
 /// <summary>
 /// There are no comments for SiteRole in the schema.
 /// </summary>
 public void AddToSiteRole(SiteRole siteRole)
 {
     base.AddObject("SiteRole", siteRole);
 }