Example #1
0
        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);
        }
Example #2
0
        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();
 }