public Task OnTicketReceived(TicketReceivedContext context) { // Get the ClaimsIdentity ClaimsIdentity identity = context.Principal.Identity as ClaimsIdentity; if (identity != null) { // Add the Name ClaimType. This is required if we want User.Identity.Name to actually return something! if (!context.Principal.HasClaim(c => c.Type == ClaimTypes.Name) && identity.HasClaim(c => c.Type == "name")) { identity.AddClaim(new Claim(ClaimTypes.Name, identity.FindFirst("name").Value)); } // Check if token names are stored in Properties if (context.Properties.Items.ContainsKey(".TokenNames")) { // Token names a semicolon separated string[] tokenNames = context.Properties.Items[".TokenNames"].Split(';'); // Add each token value as Claim foreach (string tokenName in tokenNames) { // Tokens are stored in a Dictionary with the Key ".Token.<token name>" string tokenValue = context.Properties.Items[$".Token.{tokenName}"]; identity.AddClaim(new Claim(tokenName, tokenValue)); } } Need4Service service = new Need4Service(); Need4Protocol.UserService.UserServiceClient userService = service.GetUserClient(); Need4Protocol.PermissionService.PermissionServiceClient permissionService = service.GetPermissionClient(); string email = Claims.GetEmail(context.Principal.Claims); Need4Protocol.User user = new Need4Protocol.User { Email = email }; Need4Protocol.User response = userService.GetUser(user); if (!response.Created) { response = userService.CreateUser(user); } else { Need4Protocol.PermissionSet permissions = permissionService.GetAllPermissions(user); } } return(Task.CompletedTask); }
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, BasicCommunityRequirement requirement, Trade resource) { string email = Helpers.Claims.GetEmail(context.User.Claims); if (email == null) { return(null); } Need4Service service = new Need4Service(); UserService.UserServiceClient userClient = service.GetUserClient(); Need4Protocol.User user = userClient.GetUser(new Need4Protocol.User { Email = email }); TradeUserInfo tradeUserInfo = user != null ? new TradeUserInfo { AuthenticatedUserId = user.Id, TradeId = resource.Id } : new TradeUserInfo { UnauthenticatedUser = new Empty(), TradeId = resource.Id }; TradeService.TradeServiceClient tradeClient = service.GetTradeClient(); PermissionSet permissions = tradeClient.GetPermissions(tradeUserInfo); bool hasJoinTradePermission = (from p in permissions.Permissions where p.PermissionType.Name == _Permissions.BASIC select p).Any(); if (hasJoinTradePermission) { context.Succeed(requirement); } return(Task.CompletedTask); }
protected override void OnInitialized() { base.OnInitialized(); tradeClient = Need4Service.GetTradeClient(); user = Utility.GetUser(); }