Example #1
0
        /// <inheritdoc/>
        /// <remarks>
        /// Когда <see cref="checkLocalAccess"/> - true (передаётся через конструктор атрибута),
        /// то помимо наследуюемой логики также проверяется наличие пользователя в локльной БД.
        /// Если пользователя нет, то атрибут передаресует на страницу ~/Account/AccessDenied,
        /// (см <see cref="Site1.Mvc5.Controllers.AccountController.AccessDenied"/>).
        /// </remarks>
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var authorized = base.AuthorizeCore(httpContext);

            if (!authorized)
            {
                return(false);
            }

            if (!IdSrvConnection.IsAccessBlocked(httpContext) && this.checkLocalAccess)
            {
                string idsrvUserId = IdSrvConnection.GetUserId(httpContext);
                string userLogin   = IdSrvConnection.GetUserName(httpContext);

                UserProfile userProfile = null;
                using (var context = new AccountsContext())
                {
                    userProfile =
                        context.UserProfiles.Where(p => p.IdSrvId == idsrvUserId).FirstOrDefault() ??
                        context.UserProfiles.Where(p => p.Login == userLogin).FirstOrDefault();
                }

                if (userProfile == null)
                {
                    httpContext.Response.Redirect("~/Account/AccessDenied");
                }

                return(userProfile != null);
            }

            return(true);
        }
Example #2
0
        public async Task <ActionResult> UserProfile()
        {
            string idsrvUserId = await IdSrvConnection.GetUserIdAsync(this.HttpContext);

            string userLogin = await IdSrvConnection.GetUserNameAsync(this.HttpContext);

            UserProfile userProfile = null;

            using (var context = new AccountsContext())
            {
                userProfile =
                    context.UserProfiles.Where(p => p.IdSrvId == idsrvUserId).FirstOrDefault() ??
                    context.UserProfiles.Where(p => p.Login == userLogin).FirstOrDefault();
            }

            if (userProfile == null)
            {
                return(this.HttpNotFound());
            }

            return(this.View(userProfile));
        }
        public async Task <ActionResult> AccessDenied()
        {
            string userName = await IdSrvConnection.GetUserNameAsync(this.HttpContext);

            return(this.View((object)userName));
        }