示例#1
0
        public async Task <IActionResult> PermissionGrant([FromForm] PermissionGrantModel model)
        {
            Guid sagaId;
            var  context = _dataProtector.Unprotect(model.ProtectedOAuthContext);

            if (!Guid.TryParse(context, out sagaId))
            {
                return(BadRequest());
            }
            var message = new PermissionGrantMessage(sagaId)
            {
                GrantedScopeNames = model.GrantedScopeNames ?? new List <string>()
            };
            var result = await _sagaBus.SendAsync <PermissionGrantMessage, OAuth20Result>(message);

            switch (result.State)
            {
            case OAuth20State.AuthorizationCodeGenerated:
                return(AuthorizationCodeRedirect(result));

            case OAuth20State.Finished:
                return(ImplictRedirect(result));

            case OAuth20State.UserDenied:
                return(View("UserDenied"));

            default:
                return(BadRequest());
            }
        }
示例#2
0
        public async override Task <OAuth20Result> HandleAsync(PermissionGrantMessage message)
        {
            //check granted scopes
            if (!TypLoadScopeFromNames(message.GrantedScopeNames, out _grantedScopes))
            {
                GoToState(OAuth20State.UserDenied);
                return(CurrentStateResult());
            }

            //next step
            return(await GrantPermissionAsync());
        }
示例#3
0
        public async Task<IActionResult> PermissionGrant([FromForm]PermissionGrantModel model)
        {
            Guid sagaId;
            var context = _dataProtector.Unprotect(model.ProtectedOAuthContext);
            if (!Guid.TryParse(context, out sagaId))
            {
                return BadRequest();
            }
            var message = new PermissionGrantMessage(sagaId)
            {
                GrantedScopeNames = model.GrantedScopeNames ?? new List<string>()
            };
            var result = await _sagaBus.SendAsync<PermissionGrantMessage, OAuth20Result>(message);
            switch (result.State)
            {
                case OAuth20State.AuthorizationCodeGenerated:
                    return AuthorizationCodeRedirect(result);

                case OAuth20State.Finished:
                    return ImplictRedirect(result);

                case OAuth20State.UserDenied:
                    return View("UserDenied");

                default:
                    return BadRequest();
            }
        }