コード例 #1
0
        }                                                                         //injected by IOC


        public T Authorize <T>(DataModels.ITokenRequest Request, OAuth2.DataModels.Client Client = null)
            where T : DataModels.Token, new()
        {
            var accounts = AccountModel.GetAccount(Request.username, Request.password);

            if (accounts == null || accounts.Count == 0)
            {
                throw TokenErrorUtility.CreateError(DataModels.ErrorCodes.invalid_request, "Invalid username or password", Request);
            }

            DataModels.ResourceOwner owner = new DataModels.ResourceOwner()
            {
                id         = accounts[0].username,
                time       = DateTime.UtcNow.Millisecond,
                attributes = accounts[0].ToDictonary(),
            };

            ResourceOwnerModel.CreateOrUpdate(owner);
            T token =
                TokenModel.InsertToken <T>(
                    TokenHelper.CreateAccessToken(),
                    DataModels.TokenTypes.bearer,
                    3600,
                    DateTime.UtcNow.GetTotalSeconds(),
                    Client,
                    TokenHelper.IntersectScopes(Request.scope, Client.allowed_scope),
                    owner);

            if (token == null)
            {
                throw new OAuth2.DataModels.TokenRequestError(DataModels.ErrorCodes.server_error, "Unable to store access token");
            }

            return(token);
        }
コード例 #2
0
        }                                                                        //injected by IOC

        public T Authorize <T>(DataModels.ITokenRequest Request, OAuth2.DataModels.Client Client = null)
            where T : DataModels.Token, new()
        {
            using (IDbConnection db = DBFactory.Open())
            {
                T token = TokenModel.InsertToken <T>(
                    TokenHelper.CreateAccessToken(),
                    DataModels.TokenTypes.bearer,
                    3600,
                    DateTime.UtcNow.GetTotalSeconds(),
                    Client,
                    Client.allowed_scope);

                int res = db.Execute(
                    "INSERT INTO AccessToken (access_token, client_id, expires_in, scope) VALUES (@access_token, @client_id, @expires_in, @scope);",
                    token
                    );

                if (token == null)
                {
                    throw new OAuth2.DataModels.TokenRequestError()
                          {
                              error             = DataModels.ErrorCodes.server_error,
                              error_description = "Unable to store token",
                          };
                }

                return(token);
            }
        }
コード例 #3
0
        }                                                 //injected by IOC

        public T Authorize <T>(OAuth2.DataModels.Client Client = null, OAuth2.DataModels.ResourceOwner Owner = null, string Scope = "")
            where T : DataModels.Token, new()
        {
            T token = TokenModel.InsertToken <T>(
                TokenHelper.CreateAccessToken(), DataModels.TokenTypes.bearer, 3600, DateTime.UtcNow.GetTotalSeconds(), Client, Scope, Owner);

            if (token == null)
            {
                throw new OAuth2.DataModels.TokenRequestError(DataModels.ErrorCodes.server_error, "Unable to store access token");
            }
            return(token);
        }
コード例 #4
0
 public T InsertToken <T>(string AccessToken, OAuth2.DataModels.TokenTypes TokenType, long ExpiresIn, long IssuedTime, OAuth2.DataModels.Client Client, IEnumerable <OAuth2.DataModels.Scope> Scope, OAuth2.DataModels.ResourceOwner ResourceOwner = null, string RefreshToken = null)
     where T : OAuth2.DataModels.Token, new()
 {
     return(InsertToken <T>(AccessToken, TokenType, ExpiresIn, IssuedTime, Client, Scope.ToScopeString(), ResourceOwner, RefreshToken));
 }
コード例 #5
0
 public T InsertToken <T>(string AccessToken, OAuth2.DataModels.TokenTypes TokenType, long ExpiresIn, long IssuedTime, OAuth2.DataModels.Client Client, string Scope = "", OAuth2.DataModels.ResourceOwner ResourceOwner = null, string RefreshToken = null)
     where T : OAuth2.DataModels.Token, new()
 {
     return(InsertToken <T>(AccessToken, TokenType, ExpiresIn, IssuedTime, Client.id, Scope, ResourceOwner == null ? "" : ResourceOwner.id, RefreshToken));
 }
コード例 #6
0
        public T InsertToken <T>(string AccessToken, OAuth2.DataModels.TokenTypes TokenType, long ExpiresIn, long IssuedTime, OAuth2.DataModels.Client Client, IEnumerable <OAuth2.DataModels.Scope> Scope, OAuth2.DataModels.ResourceOwner ResourceOwner = null, string RefreshToken = null) where T : OAuth2.DataModels.Token, new()
        {
            if (CacheTokenModel == null && DBTokenModel == null)
            {
                return(null);
            }

            T val = null;

            if (CacheTokenModel != null)
            {
                val = CacheTokenModel.InsertToken <T>(AccessToken, TokenType, ExpiresIn, IssuedTime, Client, Scope, ResourceOwner, RefreshToken);
            }
            if (DBTokenModel != null)
            {
                val = DBTokenModel.InsertToken <T>(AccessToken, TokenType, ExpiresIn, IssuedTime, Client, Scope, ResourceOwner, RefreshToken);
            }
            return(val);
        }