Esempio n. 1
0
        /// <summary>
        /// JWT. Освежить.
        /// </summary>
        /// <param name="input">Ввод.</param>
        /// <returns>Задача с выводом.</returns>
        public async Task <ModAuthBaseCommonJobLoginJwtOutput> JwtRefresh(ModAuthBaseJobRefreshJwtInput input)
        {
            ModAuthBaseCommonJobLoginJwtOutput result = null;

            var userId = JwtService.GetUserIdByRefreshToken(input.DataToken);

            if (userId.CoreBaseExtConvertToNumericInt64() > 0)
            {
                var userManager = input.UserManager;

                var data = await userManager.FindByIdAsync(userId)
                           .CoreBaseExtTaskWithCurrentCulture(false);

                if (data != null)
                {
                    result = await data.ModAuthBaseExtCreateHostBasePartAuthJobLoginJwtOutput(
                        userManager,
                        JwtService
                        );
                }

                JwtService.RemoveRefreshToken(input.DataToken);
            }

            if (result == null)
            {
                throw new ModAuthBaseJobRefreshJwtException();
            }

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// JWT. Войти в систему.
        /// </summary>
        /// <param name="input">Ввод.</param>
        /// <returns>Задача с выводом.</returns>
        public async Task <ModAuthBaseCommonJobLoginJwtOutput> JwtLogin(ModAuthBaseCommonJobLoginInput input)
        {
            ModAuthBaseCommonJobLoginJwtOutput result = null;

            if (!string.IsNullOrEmpty(input.DataPassword))
            {
                DataEntityObjectUser user = null;

                var userManager = input.UserManager;

                if (!string.IsNullOrEmpty(input.DataUserName))
                {
                    user = await userManager.FindByNameAsync(input.DataUserName)
                           .CoreBaseExtTaskWithCurrentCulture(false);
                }
                else if (!string.IsNullOrEmpty(input.DataEmail))
                {
                    user = await userManager.FindByEmailAsync(input.DataEmail)
                           .CoreBaseExtTaskWithCurrentCulture(false);
                }

                if (user != null)
                {
                    var isOk = await userManager.CheckPasswordAsync(user, input.DataPassword)
                               .CoreBaseExtTaskWithCurrentCulture(false);

                    if (isOk)
                    {
                        result = await user.ModAuthBaseExtCreateHostBasePartAuthJobLoginJwtOutput(
                            userManager,
                            JwtService
                            );
                    }
                }
            }

            if (result == null)
            {
                throw new ModAuthBaseCommonJobLoginException();
            }

            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Мод "Auth". Основа. Расширение. Создать. Вывод от задания на вход в систему при помощи JWT.
        /// </summary>
        /// <param name="data">Данные.</param>
        /// <param name="userManager">Менеджер пользователя.</param>
        /// <param name="jwtService">Сервис JWT.</param>
        /// <returns></returns>
        public static async Task <ModAuthBaseCommonJobLoginJwtOutput> ModAuthBaseExtCreateHostBasePartAuthJobLoginJwtOutput(
            this DataEntityObjectUser data,
            UserManager <DataEntityObjectUser> userManager,
            ICoreBaseAuthTypeJwtService jwtService
            )
        {
            var result = new ModAuthBaseCommonJobLoginJwtOutput
            {
                CurrentUser = await data.HostBasePartAuthExtCreateUser(userManager)
                              .CoreBaseExtTaskWithCurrentCulture(false)
            };

            var claims = result.CurrentUser.HostBasePartAuthExtCreateUserClaims();

            var userId = data.Id.ToString();

            result.AccessToken = jwtService.CreateAccessToken(userId, claims);

            result.RefreshToken = jwtService.CreateRefreshToken(userId);

            return(result);
        }