public Container(AccessDetail access, EndpointDetail endpoint) { Access = access; Endpoint = endpoint; Client = new RestClient(Endpoint.PublicUrl); ObjectManage = new ContainerObject(access, endpoint); }
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); } }
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); }
/// <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}"); } }
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; } } } }