Пример #1
0
        public IHttpActionResult GetUser(int id)
        {
            CEMUser   userData  = this.userService.Select(id);
            UserModel userModel = this.Mapper.Map <UserModel>(userData);

            return(Ok(userModel));
        }
        public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            string connectionString = emos1ClientService.GetConnectionString(context.ClientId);

            userRepository.GetContext().SetConnectionString(connectionString);

            CEMUser user = userRepository.SelectBy(x => x.UserName == context.UserName && x.Password == context.Password).FirstOrDefault();


            //   ApplicationSignInManager signInManager = this.GetApplicationSignInManager(context.OwinContext);
            // ApplicationUser user = signInManager.UserManager.FindAsync(context.UserName, context.Password).Result;

            if (user != null)
            {
                // ClaimsIdentity userIdentity = signInManager.UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ExternalBearer).Result;
                ClaimsIdentity userIdentity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, user.UserName), }, "OWINAuthenticationTypes", ClaimTypes.Name, ClaimTypes.Role);

                userIdentity.AddClaim(new Claim(ClaimTypes.Role, "guest"));
                userIdentity.AddClaim(new Claim(ClaimTypes.GivenName, $"{user.FirstName} {user.LastName}"));
                userIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.UserName));
                userIdentity.AddClaim(new Claim(ClaimTypes.Sid, user.ID.ToString())); //OK to store userID here?
                userIdentity.AddClaim(new Claim("FullName", $"{user.FirstName} {user.LastName}"));


                AuthenticationProperties authenticationProperties = new AuthenticationProperties(new Dictionary <string, string>
                {
                    {
                        "client_id", context.ClientId
                    }
                });

                AuthenticationTicket authenticationTicket = new AuthenticationTicket(userIdentity, authenticationProperties);

                context.Validated(authenticationTicket);

                // Setting LastLoginDate
                // user.LastLoginDate = DateTime.UtcNow;
                //signInManager.UserManager.Update(user);
            }
            else
            {
                context.SetError("invalid_grant", "The username or password is incorect");
            }

            return(Task.FromResult(0));
        }