Ejemplo n.º 1
0
        public CResult <string> Authenticate(UserCredentials userCredentials)
        {
            try
            {
                using (var _userManager = new UserManager())
                    using (var _roleManager = new RoleManager())
                        using (var _userRoleManager = new UserRoleManager())
                        {
                            var user = _userManager.GetWithCondition(
                                c => c.UserName == userCredentials.UserName &&
                                c.Password == userCredentials.Password).Model;

                            var userRole = _userRoleManager.GetWithCondition(c => c.UserId == user.Id).Model;

                            if (userRole == null)
                            {
                                return new CResult <string>()
                                       {
                                           Data = string.Empty, IsSucceeded = false, Message = "Role undefined"
                                       }
                            }
                            ;

                            var role     = _roleManager.GetWithCondition(c => c.Id == userRole.RoleId).Model;
                            var userInfo = new UserInfo()
                            {
                                FirstName      = user.FirstName,
                                LastName       = user.LastName,
                                HasAdminRights = false
                            };

                            var accessTokenResult = jwtTokenGenerator.GenerateAccessTokenWithClaimsPrincipal(
                                userCredentials.UserName,
                                role.Name,
                                AddClaims(userInfo));

                            return(new CResult <string>()
                            {
                                Data = accessTokenResult.AccessToken, Message = "Token Created", IsSucceeded = true
                            });
                        }
            }
            catch (Exception ex)
            {
                return(new CResult <string>()
                {
                    Data = string.Empty, IsSucceeded = false, Message = ex.Message
                });
            }
        }