예제 #1
0
        public async Task <object> RefreshToken(string id, string RefreshToken, string refreshToken)
        {
            var user = await _userReporitory.GetRefreshToken(id);

            if (user is null || user.UserRefreshTokens?.Count() <= 0)
            {
                return(null);
            }
            if (!user.IsValidRefreshToken(RefreshToken))
            {
                return(null);
            }
            UserRefreshToken refresh = user.UserRefreshTokens.Where(o => o.Token == RefreshToken).FirstOrDefault();

            if (!_RefreshTokenRepository.Delete(refresh))
            {
                return(null);
            }
            user.CreateRefreshToken(refreshToken, user.UserName);
            if (!await _userReporitory.Save(user))
            {
                return(null);
            }

            IEnumerable <Claim> claims = new Claim[]
            {
                new Claim(JwtClaimTypes.Email, user.EMail),
                new Claim(JwtClaimTypes.Name, user.UserName),
                new Claim(JwtClaimTypes.Role, "admin"),
            };

            return(claims);
        }
예제 #2
0
        public bool DeleteUser(int id)
        {
            List <UserChatRoom> listUserChatRoom = _userChatRoomRepository.GetAllUserChatRoom(id);

            foreach (UserChatRoom i in listUserChatRoom)
            {
                _userChatRoomRepository.Delete(i);
            }
            List <UserRefreshToken> listRefreshToken = _userRefreshTokenRepository.GetTokenByUID(id);

            foreach (UserRefreshToken i in listRefreshToken)
            {
                _userRefreshTokenRepository.Delete(i);
            }
            _userRepository.Delete(_userRepository.GetById(id));
            return(true);
        }