feat: support github oauth

This commit is contained in:
vran
2022-02-28 23:12:44 +08:00
parent ad8cbab226
commit 18edc58d2f
20 changed files with 509 additions and 6 deletions

View File

@@ -0,0 +1,10 @@
package com.databasir.dao.enums;
public enum OAuthAppType {
GITHUB, GITLAB;
public boolean isSame(String type) {
return this.name().equalsIgnoreCase(type);
}
}

View File

@@ -1,22 +1,37 @@
package com.databasir.dao.impl;
import com.databasir.dao.tables.OauthApp;
import com.databasir.dao.exception.DataNotExistsException;
import com.databasir.dao.tables.pojos.OauthAppPojo;
import lombok.Getter;
import org.jooq.DSLContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.Optional;
import static com.databasir.dao.Tables.OAUTH_APP;
@Repository
public class OAuthAppDao extends BaseDao<OauthApp> {
public class OAuthAppDao extends BaseDao<OauthAppPojo> {
@Autowired
@Getter
private DSLContext dslContext;
public OAuthAppDao() {
super(OAUTH_APP, OauthApp.class);
super(OAUTH_APP, OauthAppPojo.class);
}
public Optional<OauthAppPojo> selectOptionByRegistrationId(String registrationId) {
return this.getDslContext()
.select(OAUTH_APP.fields()).from(OAUTH_APP).where(OAUTH_APP.REGISTRATION_ID.eq(registrationId))
.fetchOptionalInto(OauthAppPojo.class);
}
public OauthAppPojo selectByRegistrationId(String registrationId) {
return this.getDslContext()
.select(OAUTH_APP.fields()).from(OAUTH_APP).where(OAUTH_APP.REGISTRATION_ID.eq(registrationId))
.fetchOptionalInto(OauthAppPojo.class)
.orElseThrow(() -> new DataNotExistsException("can not found oauth app by " + registrationId));
}
}

View File

@@ -0,0 +1,18 @@
CREATE TABLE IF NOT EXISTS oauth_app
(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
registration_id VARCHAR(100) NOT NULL,
app_name VARCHAR(128) NOT NULL,
app_icon VARCHAR(256) NOT NULL DEFAULT '',
app_type VARCHAR(64) NOT NULL COMMENT 'github, gitlab',
client_id VARCHAR(256),
client_secret VARCHAR(256),
auth_url VARCHAR(256),
resource_url VARCHAR(256),
scope VARCHAR(256),
update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
create_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE uk_registration_id (registration_id)
) CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COMMENT 'oauth app info';