/// <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; }
/// <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; }
/// <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(); } }
/// <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(); } }
/// <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(); } }
/// <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; }
/// <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(); } }
/// <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(); } }
/// <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(); } }