示例#1
0
        /// <summary>
        ///     Associate an access token with a session
        ///     <para />
        ///     Example SQL query:
        ///     <code>
        /// INSERT INTO oauth_session_access_tokens (session_id, access_token, access_token_expires)
        /// VALUE (:sessionId, :accessToken, :accessTokenExpire)
        /// </code>
        /// </summary>
        /// <param name="sessionId">The session ID</param>
        /// <param name="accessToken">The access token</param>
        /// <param name="expireTime">Timestamp of the access token expiry time</param>
        /// <returns>The Access Token ID</returns>
        /// <exception cref="System.ArgumentException">
        ///     sessionId
        ///     or
        ///     accessToken
        /// </exception>
        public int AssociateAccessToken(int sessionId, string accessToken, DateTime expireTime)
        {
            int ret;
            if (sessionId <= 0) throw new ArgumentException("sessionId");
            if (string.IsNullOrEmpty(accessToken)) throw new ArgumentException("accessToken");
            // INSERT INTO oauth_session_access_tokens (session_id, access_token, access_token_expires) VALUE (:sessionId, :accessToken, :accessTokenExpire)
            using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
            {
                var osat = new oauth_session_access_token
                {
                    session_id = sessionId,
                    access_token = accessToken,
                    access_token_expires = expireTime
                };
                adc.oauth_session_access_tokens.InsertOnSubmit(osat);
                adc.SubmitChanges();
                ret = osat.id;
            }

            return ret;
        }
示例#2
0
        /// <summary>
        ///     Associate an authorization code with a session
        ///     <para />
        ///     Example SQL query:
        ///     <code>
        /// INSERT INTO oauth_session_authcodes (session_id, auth_code, auth_code_expires)
        /// VALUE (:sessionId, :authCode, :authCodeExpires)
        /// </code>
        /// </summary>
        /// <param name="sessionId">The session ID</param>
        /// <param name="authCode">The authorization code</param>
        /// <param name="expireTime">Timestamp of the access token expiry time</param>
        /// <returns>System.Int32. The auth code ID</returns>
        /// <exception cref="System.ArgumentException">
        ///     sessionId
        ///     or
        ///     authCode
        /// </exception>
        public int AssociateAuthCode(int sessionId, string authCode, DateTime expireTime)
        {
            int ac;
            if (sessionId <= 0) throw new ArgumentException("sessionId");
            if (string.IsNullOrEmpty(authCode)) throw new ArgumentException("authCode");
            // INSERT INTO oauth_session_authcodes (session_id, auth_code, auth_code_expires) VALUE (:sessionId, :authCode, :authCodeExpires)
            using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
            {
                var osa = new oauth_session_authcode
                {
                    session_id = sessionId,
                    auth_code = authCode,
                    auth_code_expires = expireTime
                };
                adc.oauth_session_authcodes.InsertOnSubmit(osa);
                adc.SubmitChanges();

                ac = osa.id;
            }

            return ac;
        }
示例#3
0
 /// <summary>
 ///     Removes a refresh token
 ///     <para />
 ///     Example SQL query:
 ///     <code>
 /// DELETE FROM oauth_session_refresh_tokens WHERE refresh_token = :refreshToken
 /// </code>
 /// </summary>
 /// <param name="refreshToken">The refresh token to be removed</param>
 /// <exception cref="System.ArgumentException">Raised when refreshToken is empty</exception>
 public void RemoveRefreshToken(string refreshToken)
 {
     if (string.IsNullOrEmpty(refreshToken)) throw new ArgumentException("refreshToken");
     // DELETE FROM oauth_session_refresh_tokens WHERE refresh_token = :refreshToken
     using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
     {
         var os = adc.oauth_session_refresh_tokens.SingleOrDefault(o => o.refresh_token == refreshToken);
         if (os == null) return;
         adc.oauth_session_refresh_tokens.DeleteOnSubmit(os);
         adc.SubmitChanges();
     }
 }
示例#4
0
 /// <summary>
 ///     Remove an associated authorization token from a session
 ///     <para />
 ///     Example SQL query:
 ///     <code>
 /// DELETE FROM oauth_session_authcodes WHERE session_id = :sessionId
 /// </code>
 /// </summary>
 /// <param name="sessionId">The session ID</param>
 /// <exception cref="System.ArgumentException">Raised when sessionId is 0 or less</exception>
 public void RemoveAuthCode(int sessionId)
 {
     if (sessionId <= 0) throw new ArgumentException("sessionId");
     // DELETE FROM oauth_session_authcodes WHERE session_id = :sessionId
     using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
     {
         var os = adc.oauth_session_authcodes.SingleOrDefault(o => o.session_id == sessionId);
         if (os == null) return;
         adc.oauth_session_authcodes.DeleteOnSubmit(os);
         adc.SubmitChanges();
     }
 }
示例#5
0
 /// <summary>
 ///     Delete a session
 ///     <para />
 ///     Example SQL query:
 ///     <code>
 /// DELETE FROM oauth_sessions WHERE client_id = :clientId AND owner_type = :type AND owner_id = :typeId
 /// </code>
 /// </summary>
 /// <param name="clientId">The client ID</param>
 /// <param name="ownerType">The type of the session owner (e.g. "user")</param>
 /// <param name="ownerId">The ID of the session owner (e.g. "123")</param>
 /// <exception cref="System.ArgumentException">
 ///     clientId
 ///     or
 ///     ownerType
 ///     or
 ///     ownerId
 /// </exception>
 public void DeleteSession(string clientId, OwnerType ownerType, string ownerId)
 {
     if (string.IsNullOrEmpty(clientId)) throw new ArgumentException("clientId");
     if (string.IsNullOrEmpty(ownerId)) throw new ArgumentException("ownerId");
     // DELETE FROM oauth_sessions WHERE client_id = :clientId AND owner_type = :type AND owner_id = :typeId
     using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
     {
         var os = adc.oauth_sessions.SingleOrDefault(o => o.client_id == clientId && o.owner_type == ownerType.ToString() && o.owner_id == ownerId);
         if (os == null) return;
         adc.oauth_sessions.DeleteOnSubmit(os);
         adc.SubmitChanges();
     }
 }
示例#6
0
        /// <summary>
        ///     Create a new session
        ///     <para />
        ///     Example SQL query:
        ///     <code>
        /// INSERT INTO oauth_sessions (client_id, owner_type,  owner_id)
        /// VALUE (:clientId, :ownerType, :ownerId)
        /// </code>
        ///     <para />
        /// </summary>
        /// <param name="clientId">The client ID</param>
        /// <param name="ownerType">The type of the session owner (e.g. "user")</param>
        /// <param name="ownerId">The ID of the session owner (e.g. "123")</param>
        /// <returns>System.Int32. The session ID</returns>
        /// <exception cref="System.ArgumentException">
        ///     clientId
        ///     or
        ///     ownerType
        ///     or
        ///     ownerId
        /// </exception>
        public int CreateSession(string clientId, OwnerType ownerType, string ownerId)
        {
            int session;
            if (string.IsNullOrEmpty(clientId)) throw new ArgumentException("clientId");
            if (string.IsNullOrEmpty(ownerId)) throw new ArgumentException("ownerId");
            // INSERT INTO oauth_sessions (client_id, owner_type,  owner_id) VALUE (:clientId, :ownerType, :ownerId)
            using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
            {
                var os = new oauth_session { client_id = clientId, owner_type = ownerType.ToString(), owner_id = ownerId };
                adc.oauth_sessions.InsertOnSubmit(os);
                adc.SubmitChanges();
                session = os.id;
            }

            return session;
        }
示例#7
0
        /// <summary>
        ///     Associate a scope with an access token
        ///     <para />
        ///     Example SQL query:
        ///     <code>
        /// INSERT INTO oauth_session_token_scopes (session_access_token_id, scope_id) VALUE (:accessTokenId, :scopeId)
        /// </code>
        /// </summary>
        /// <param name="accessTokenId">The ID of the access token</param>
        /// <param name="scopeId">The ID of the scope</param>
        /// <exception cref="System.ArgumentException">
        ///     accessTokenId
        ///     or
        ///     scopeId
        /// </exception>
        public void AssociateScope(int accessTokenId, int scopeId)
        {
            if (accessTokenId <= 0) throw new ArgumentException("accessTokenId");
            if (scopeId <= 0) throw new ArgumentException("scopeId");

            // INSERT INTO oauth_session_token_scopes (session_access_token_id, scope_id) VALUE (:accessTokenId, :scopeId)
            using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
            {
                adc.oauth_session_token_scopes.InsertOnSubmit(new oauth_session_token_scope
                {
                    session_access_token_id = accessTokenId,
                    scope_id = scopeId
                });
                adc.SubmitChanges();
            }
        }
示例#8
0
 /// <summary>
 ///     Associate a refresh token with a session
 ///     <para />
 ///     Example SQL query:
 ///     <code>
 /// INSERT INTO oauth_session_refresh_tokens (session_access_token_id, refresh_token, refresh_token_expires,
 /// client_id) VALUE (:accessTokenId, :refreshToken, :expireTime, :clientId)
 /// </code>
 /// </summary>
 /// <param name="accessTokenId">The access token ID</param>
 /// <param name="refreshToken">The refresh token</param>
 /// <param name="expireTime">Timestamp of the refresh token expiry time</param>
 /// <param name="clientId">The client ID</param>
 /// <exception cref="System.ArgumentException">
 ///     accessTokenId
 ///     or
 ///     refreshToken
 ///     or
 ///     clientId
 /// </exception>
 public void AssociateRefreshToken(int accessTokenId, string refreshToken, DateTime expireTime, string clientId)
 {
     if (accessTokenId <= 0) throw new ArgumentException("accessTokenId");
     if (string.IsNullOrEmpty(refreshToken)) throw new ArgumentException("refreshToken");
     if (string.IsNullOrEmpty(clientId)) throw new ArgumentException("clientId");
     // INSERT INTO oauth_session_refresh_tokens (session_access_token_id, refresh_token, refresh_token_expires, client_id) VALUE (:accessTokenId, :refreshToken, :expireTime, :clientId)
     using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
     {
         adc.oauth_session_refresh_tokens.InsertOnSubmit(new oauth_session_refresh_token
         {
             session_access_token_id = accessTokenId,
             refresh_token = refreshToken,
             refresh_token_expires = expireTime,
             client_id = clientId
         });
         adc.SubmitChanges();
     }
 }
示例#9
0
 /// <summary>
 ///     Associate a redirect URI with a session
 ///     <para />
 ///     Example SQL query:
 ///     <code>
 /// INSERT INTO oauth_session_redirects (session_id, redirect_uri) VALUE (:sessionId, :redirectUri)
 /// </code>
 /// </summary>
 /// <param name="sessionId">The session ID</param>
 /// <param name="redirectUri">The redirect URI</param>
 /// <exception cref="System.ArgumentException">
 ///     sessionId
 ///     or
 ///     redirectUri
 /// </exception>
 public void AssociateRedirectUri(int sessionId, string redirectUri)
 {
     if (sessionId <= 0) throw new ArgumentException("sessionId");
     if (string.IsNullOrEmpty(redirectUri)) throw new ArgumentException("redirectUri");
     // INSERT INTO oauth_session_redirects (session_id, redirect_uri) VALUE (:sessionId, :redirectUri)
     using (var adc = new AditOAUTHDataContext(Constants.DBConnectionString))
     {
         adc.oauth_session_redirects.InsertOnSubmit(new oauth_session_redirect
         {
             session_id = sessionId,
             redirect_uri = redirectUri
         });
         adc.SubmitChanges();
     }
 }