예제 #1
0
 public int GetUserId(HttpContext httpContext)
 {
     try
     {
         RoPrincipal user = httpContext.User as RoPrincipal;
         if (user != null)
         {
             return(user.UserId);
         }
         var cookie = httpContext.Request.Cookies[FormsAuthentication.FormsCookieName];
         FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
         var data = ticket.UserData.Split(';');
         foreach (var kvp in data)
         {
             var kv = kvp.Split(':');
             if (kv[0] == "id")
             {
                 return(int.Parse(kv[1]));
             }
         }
     }
     catch
     {
         // ignored
     }
     FormsAuthentication.SignOut();
     throw new AuthenticationException("User not authenticated");
 }
예제 #2
0
        public ResultModel UpdateInfo(Client client)
        {
            var         updatingClient   = _clientService.GetClient(client.ClientId);
            RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;

            if (currentPrincipal == null || currentPrincipal.UserId != updatingClient.UserId && !currentPrincipal.IsAuthorizedForResource(ShopRoCmsResources.Shop))
            {
                return(ResultModel.Error);
            }

            _clientService.UpdateClientInfo(client);
            return(ResultModel.Success);
        }
예제 #3
0
        public User GetCurrentUserInfo()
        {
            RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;

            if (currentPrincipal == null)
            {
                return(null);
            }

            return(new User()
            {
                UserId = currentPrincipal.UserId, Username = User.Identity.Name
            });
        }
예제 #4
0
        public ResultModel GetForUser(int userId)
        {
            RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;

            if (currentPrincipal == null || currentPrincipal.UserId != userId && !currentPrincipal.IsAuthorizedForResource(ShopRoCmsResources.Shop))
            {
                return(ResultModel.Error);
            }

            var client = _clientService.GetClientByUserId(userId);

            if (client != null)
            {
                return(new ResultModel(true, client));
            }
            return(ResultModel.Error);
        }
예제 #5
0
        public override void OnAuthorization(HttpActionContext filterContext)
        {
            base.OnAuthorization(filterContext);

            RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;

            if (currentPrincipal != null && currentPrincipal.Identity.IsAuthenticated && _resources.Length > 0)
            {
                foreach (string resource in _resources)
                {
                    if (!currentPrincipal.IsAuthorizedForResource(resource))
                    {
                        filterContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden);
                        break;
                    }
                }
            }
        }
예제 #6
0
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);

            RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;

            if (currentPrincipal != null && currentPrincipal.Identity.IsAuthenticated && _resources.Length > 0)
            {
                foreach (string resource in _resources)
                {
                    if (!currentPrincipal.IsAuthorizedForResource(resource))
                    {
                        filterContext.Result = new HttpUnauthorizedResult();
                        break;
                    }
                }
            }
        }
예제 #7
0
        public void UpdateUserDiscount(Guid cartId)
        {
            RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;
            decimal     discount;

            if (currentPrincipal == null)
            {
                discount = 0;
            }
            else
            {
                discount = _shopClientService.GetRegularDiscountForClient(currentPrincipal.UserId);
            }
            var cart = _cartGateway.SelectOne(cartId);

            cart.TotalDiscount = discount;
            _cartGateway.Update(cart);
        }
예제 #8
0
        public void UpdateUserDiscount(Guid cartId)
        {
            RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;
            decimal     discount;

            if (currentPrincipal == null)
            {
                discount = 0;
            }
            else
            {
                discount = _clientService.GetRegularDiscountForClient(currentPrincipal.UserId);
            }
            var cart = GetCart(cartId);

            cart.TotalDiscount = discount;

            AddOrUpdateCacheObject(cartId.ToString(), cart);
        }
예제 #9
0
        public ActionResult Personal()
        {
            RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;

            if (currentPrincipal == null)
            {
                return(new HttpUnauthorizedResult());
            }

            var client = _clientService.GetClientByUserId(currentPrincipal.UserId);

            //IEnumerable<Order> orders = _clientService.GetOrdersByUserId(currentPrincipal.UserId);
            if (client != null)
            {
                int total;
                IEnumerable <Order> orders =
                    _shopOrderService.GetOrderPage(1, Int32.MaxValue, out total, client.ClientId);
                ViewBag.Orders = orders;
            }

            return(View(client));
        }
예제 #10
0
        public override bool IsVisible(ISiteMapNode node, IDictionary <string, object> sourceMetadata)
        {
            // Is a visibility attribute specified?
            bool resourceCheckSuccessful   = false;
            bool visibilityCheckSuccessful = false;

            if (!node.Attributes.ContainsKey("visibility"))
            {
                visibilityCheckSuccessful = true;
            }
            else
            {
                string visibility = node.Attributes["visibility"] as string;
                if (string.IsNullOrEmpty(visibility))
                {
                    visibilityCheckSuccessful = true;
                }
                else
                {
                    string resource = visibility.Trim();
                    if (sourceMetadata.ContainsKey("name") && (string)sourceMetadata["name"] == resource)
                    {
                        visibilityCheckSuccessful = true;
                    }
                    else if (sourceMetadata.ContainsKey("HtmlHelper") && (string)sourceMetadata["HtmlHelper"] == resource)
                    {
                        visibilityCheckSuccessful = true;
                    }
                }
            }
            if (!visibilityCheckSuccessful)
            {
                return(false);
            }

            if (!node.Attributes.ContainsKey("cmsResourceRequired"))
            {
                resourceCheckSuccessful = true;
            }
            else
            {
                string visibility = node.Attributes["cmsResourceRequired"] as string;
                if (string.IsNullOrEmpty(visibility))
                {
                    resourceCheckSuccessful = true;
                }
                else
                {
                    string resource = visibility.Trim();

                    //process visibility


                    RoPrincipal currentPrincipal = Thread.CurrentPrincipal as RoPrincipal;
                    if (currentPrincipal != null && currentPrincipal.Identity.IsAuthenticated)
                    {
                        if (currentPrincipal.IsAuthorizedForResource(resource))
                        {
                            resourceCheckSuccessful = true;
                        }
                    }
                }
            }

            return(resourceCheckSuccessful && visibilityCheckSuccessful);
        }