Ejemplo n.º 1
0
        public void Setup()
        {
            _configurationManagerWrapper     = A.Fake <IConfigurationManagerWrapper>();
            _windowsTokenRoleProviderWrapper = A.Fake <IWindowsTokenRoleProviderWrapper>();
            _userPrincipalProvider           = A.Fake <IUserPrincipalProvider>();

            _administratorsgroup = "administratorsgroup";
            A.CallTo(() => _configurationManagerWrapper.AppSettings).Returns(new NameValueCollection()
            {
                { ApplicationSettingConstants.McaAdministratorsActiveDirectoryGroup, _administratorsgroup }
            });
            _username = "******";
            A.CallTo(() => _userPrincipalProvider.CurrentUserName).Returns(_username);

            _userRoleProvider = new UserRoleProvider(_configurationManagerWrapper, _windowsTokenRoleProviderWrapper, _userPrincipalProvider);
        }
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
            UserProvider     _userProvider     = new UserProvider();
            UserRoleProvider _userRoleProvider = new UserRoleProvider();
            var entityUser = await _userProvider.LoginUser(context.UserName, context.Password);

            if (entityUser == null)
            {
                context.SetError("invalid_grant", "The user name or password is incorrect.");
                return;
            }
            else
            {
                IdentityUser user = new IdentityUser
                {
                    UserName = entityUser.UserName,
                    Id       = entityUser.UserId.ToString()
                };
            }

            var userrole = await _userRoleProvider.GetById(entityUser.RoleId.Value);

            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            identity.AddClaim(new Claim("sub", context.UserName));
            identity.AddClaim(new Claim("role", userrole.Description));

            var props = new AuthenticationProperties(new Dictionary <string, string>
            {
                { "firstName", entityUser.FirstName },
                { "lastName", entityUser.LastName },
                { "userRole", userrole.Description }
            });
            var ticket = new AuthenticationTicket(identity, props);

            context.Validated(ticket);
        }