Example #1
0
 public Container(AccessDetail access, EndpointDetail endpoint)
 {
     Access       = access;
     Endpoint     = endpoint;
     Client       = new RestClient(Endpoint.PublicUrl);
     ObjectManage = new ContainerObject(access, endpoint);
 }
Example #2
0
        public static string BuildAccessTags(AccessType access, string userId)
        {
            string result = string.Empty;

            if (access == AccessType.Public)
            {
                return(result);
            }
            AccessDetail accessDetail = GetAccessDetail(access);

            switch (access)
            {
            case AccessType.Counter:
                result = "~" + accessDetail.tags[0];
                break;

            case AccessType.FriendsOfGuests:
            case AccessType.FriendsOnly:
            case AccessType.InviteOnly:
                result = string.Format("~{0}({1})~nonce({2})", accessDetail.tags[0], userId, new string((from s in Enumerable.Repeat("ABCDEF0123456789", 64)
                                                                                                         select s[Random.Range(0, s.Length)]).ToArray()));
                break;

            case AccessType.InvitePlus:
                result = string.Format("~{0}({1})~{2}~nonce({3})", accessDetail.tags[0], userId, accessDetail.tags[1], new string((from s in Enumerable.Repeat("ABCDEF0123456789", 64)
                                                                                                                                   select s[Random.Range(0, s.Length)]).ToArray()));
                break;
            }
            return(result);
        }
        /// <summary>
        /// 更新访问类型明细.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="accessTypeCode"></param>
        /// <param name="accessDetailCode"></param>
        private void UpdateAccessDetail(MyAccessStatisticsContext context, string accessTypeCode, string accessDetailCode)
        {
            // 检查, 访问明细 是否存在.
            AccessDetail accessDetail = context.AccessDetails.Find(accessTypeCode, accessDetailCode);

            if (accessDetail == null)
            {
                // 未知的明细, 自动创建.
                accessDetail = new AccessDetail()
                {
                    AccessTypeCode = accessTypeCode,
                    DetailCode     = accessDetailCode,
                };
                // 新增.
                context.AccessDetails.Add(accessDetail);
            }
        }
Example #4
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (!String.IsNullOrEmpty(permission))
            {
                using (var dbConn = Helpers.OrmliteConnection.openConn())

                {
                    var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
                    var listPermission = permission.Split(',');
                    var exist          = dbConn.SingleOrDefault <AccessRight>("controllerName={0}", controllerName);
                    if (exist != null)
                    {
                        if (listPermission.ToList().Except(exist.access).Count() > 0)
                        {
                            exist.access    = listPermission.Distinct().ToList();
                            exist.updatedAt = DateTime.Now;
                            exist.updatedBy = "administrator";
                            dbConn.Update(exist);
                        }
                    }
                    else
                    {
                        var newAccess = new AccessRight();
                        newAccess.controllerName = controllerName;
                        newAccess.access         = listPermission.Distinct().ToList();
                        newAccess.createdAt      = DateTime.Now;
                        newAccess.createdBy      = "administrator";
                        dbConn.Insert(newAccess);
                    }

                    var existPermission = dbConn.Select <AccessDetail>("controllerName={0}", controllerName);
                    foreach (var item in existPermission)
                    {
                        var intersect = exist.access.Except(item.access.Select(s => s.Key));
                        foreach (var item1 in intersect)
                        {
                            item.access.Add(item1, false);
                        }
                        dbConn.Update(item);
                    }

                    var existAdminPermission = dbConn.SingleOrDefault <AccessDetail>("groupId = 1 AND controllerName={0}", controllerName);
                    if (existAdminPermission != null)
                    {
                        if (String.Join(",", existAdminPermission.access.Select(s => s.Key)) != permission)
                        {
                            var access = new Dictionary <string, bool>();
                            foreach (var item in listPermission.Distinct().ToList())
                            {
                                if (item == "all")
                                {
                                    access.Add(item, true);
                                }
                                else
                                {
                                    access.Add(item, false);
                                }
                            }
                            existAdminPermission.access    = access;
                            existAdminPermission.updatedAt = DateTime.Now;
                            existAdminPermission.updatedBy = "administrator";
                            dbConn.Update(existAdminPermission);
                        }
                    }
                    else
                    {
                        var accessDetail = new AccessDetail();
                        accessDetail.controllerName = controllerName;
                        accessDetail.groupId        = 1;
                        var access = new Dictionary <string, bool>();
                        foreach (var item in listPermission.Distinct().ToList())
                        {
                            if (item == "all")
                            {
                                access.Add(item, true);
                            }
                            else
                            {
                                access.Add(item, false);
                            }
                        }
                        accessDetail.access    = access;
                        accessDetail.createdAt = DateTime.Now;
                        accessDetail.createdBy = "administrator";
                        dbConn.Insert(accessDetail);
                    }
                }
            }
            base.OnActionExecuting(filterContext);
        }
Example #5
0
        /// <summary>
        /// Returns the list of updated/created pseudo agencies
        /// </summary>
        /// <param name="agencyAbstractTypes"></param>
        /// <param name="xUserId"></param>
        /// <param name="buType"></param>
        /// <param name="dbUser"></param>
        /// <param name="selectedBusinessRole"></param>
        /// <param name="accessDetail"></param>
        /// <param name="labels"></param>
        /// <returns></returns>
        private async Task GrantAccessToAbstractType(IEnumerable <AbstractType> agencyAbstractTypes, Guid xUserId, BuType buType, CostUser dbUser, BusinessRole selectedBusinessRole, AccessDetail accessDetail, string[] labels = null)
        {
            foreach (var agencyAbstractType in agencyAbstractTypes)
            {
                await _permissionService.GrantUserAccess <AbstractType>(selectedBusinessRole.RoleId, agencyAbstractType.Id, dbUser, buType, null, null, false);

                dbUser.UserBusinessRoles.Add(new UserBusinessRole(xUserId)
                {
                    BusinessRole = selectedBusinessRole,
                    ObjectId     = agencyAbstractType.Id,
                    ObjectType   = accessDetail.ObjectType,
                    Labels       = labels ?? new string[0]
                });

                _logger.Information(
                    $"User {xUserId} granted access for object {agencyAbstractType.Id} of type Parent with BusinessRole {selectedBusinessRole.Key}|{selectedBusinessRole.Id}");
            }
        }
Example #6
0
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
            if (User.Identity.IsAuthenticated)
            {
                using (var dbConn = Helpers.OrmliteConnection.openConn())
                {
                    currentUser = dbConn.FirstOrDefault <Users>("name={0}", User.Identity.Name);
                    if (currentUser != null)
                    {
                        if (!currentUser.active)
                        {
                            AuthenticationManager.SignOut();
                        }

                        isAdmin = dbConn.Scalar <bool>("select top 1 1 from UserInGroup WHERE userId = " + currentUser.id + " and groupId = 1");

                        var controller = this.GetType().Name.Substring(0, this.GetType().Name.IndexOf("Controller"));
                        if (controller != "CustomData")
                        {
                            var listAccess = currentUser.listAccess.Where(s => s.controllerName == controller);
                            var access     = new Dictionary <string, bool>();
                            if (listAccess.Count() > 0)
                            {
                                foreach (var item in listAccess.FirstOrDefault().access.Select(s => s.Key))
                                {
                                    access.Add(item, listAccess.Where(s => s.access.ContainsKey(item) && s.access[item] == true).Count() > 0 ? true : false);
                                }
                            }

                            accessDetail = currentUser.listAccess.Where(s => s.controllerName == controller).FirstOrDefault();
                            if (accessDetail != null)
                            {
                                accessDetail.access = access;
                            }
                        }


                        ViewData["menuView"] = currentUser.listAccess.Where(s => s.access != null && ((s.access.ContainsKey("all") && s.access["all"]) || (s.access.ContainsKey("view") && s.access["view"]))).Select(s => s.controllerName).ToList();
                        ViewBag.accessDetail = accessDetail;
                        string image = String.Empty;
                        //if (currentUser.imagesSize != null)
                        //{
                        //    image = currentUser.imagesSize.face;
                        //}
                        //else
                        if (currentUser.gender == null || currentUser.gender == "unknown")
                        {
                            image = Url.Content("~/Content/images/unknown.png");
                        }
                        else
                        {
                            image = currentUser.gender == "male" ? Url.Content("~/Content/images/male.png") : Url.Content("~/Content/images/female.png");
                        }
                        ViewBag.userImage      = image;
                        ViewData["userId"]     = currentUser.id.ToString();
                        ViewBag.controllerName = controller;
                    }
                }
            }
        }