예제 #1
0
        public async Task ValidateAsync(ExtensionGrantValidationContext context)
        {
            var phone    = context.Request.Raw.Get("phone");
            var authcode = context.Request.Raw.Get("auth_code");
            var errorGrantValidationResult = new GrantValidationResult(TokenRequestErrors.InvalidGrant);

            if (string.IsNullOrEmpty(phone) || string.IsNullOrEmpty(authcode))
            {
                context.Result = errorGrantValidationResult;
                return;
            }

            if (!await _authcodeservice.ValidateAuthCode())
            {
                context.Result = errorGrantValidationResult;
                return;
            }

            var userid = await _userService.CheckOrCreate(phone);

            if (!userid)
            {
                context.Result = errorGrantValidationResult;
                return;
            }
            context.Result = new GrantValidationResult(userid.ToString(), GrantType);
        }