mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-05-30 22:47:41 +08:00
Merge pull request #237 from nagisa77/lja3lv-codex
Centralize open-isle domain
This commit is contained in:
1
open-isle-cli/src/constants.js
Normal file
1
open-isle-cli/src/constants.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export const WEBSITE_BASE_URL = 'https://www.open-isle.com'
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import { API_BASE_URL, DISCORD_CLIENT_ID, toast } from '../main'
|
import { API_BASE_URL, DISCORD_CLIENT_ID, toast } from '../main'
|
||||||
|
import { WEBSITE_BASE_URL } from '../constants'
|
||||||
import { setToken, loadCurrentUser } from './auth'
|
import { setToken, loadCurrentUser } from './auth'
|
||||||
|
|
||||||
export function discordAuthorize(state = '') {
|
export function discordAuthorize(state = '') {
|
||||||
@@ -6,7 +7,7 @@ export function discordAuthorize(state = '') {
|
|||||||
toast.error('Discord 登录不可用')
|
toast.error('Discord 登录不可用')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const redirectUri = `https://www.open-isle.com/discord-callback`
|
const redirectUri = `${WEBSITE_BASE_URL}/discord-callback`
|
||||||
const url = `https://discord.com/api/oauth2/authorize?client_id=${DISCORD_CLIENT_ID}&redirect_uri=${encodeURIComponent(redirectUri)}&response_type=code&scope=identify%20email&state=${state}`
|
const url = `https://discord.com/api/oauth2/authorize?client_id=${DISCORD_CLIENT_ID}&redirect_uri=${encodeURIComponent(redirectUri)}&response_type=code&scope=identify%20email&state=${state}`
|
||||||
window.location.href = url
|
window.location.href = url
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
import { API_BASE_URL, GITHUB_CLIENT_ID, toast } from '../main'
|
import { API_BASE_URL, GITHUB_CLIENT_ID, toast } from '../main'
|
||||||
import { setToken, loadCurrentUser } from './auth'
|
import { setToken, loadCurrentUser } from './auth'
|
||||||
|
import { WEBSITE_BASE_URL } from '../constants'
|
||||||
|
|
||||||
export function githubAuthorize(state = '') {
|
export function githubAuthorize(state = '') {
|
||||||
if (!GITHUB_CLIENT_ID) {
|
if (!GITHUB_CLIENT_ID) {
|
||||||
toast.error('GitHub 登录不可用')
|
toast.error('GitHub 登录不可用')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const redirectUri = `https://www.open-isle.com/github-callback`
|
const redirectUri = `${WEBSITE_BASE_URL}/github-callback`
|
||||||
const url = `https://github.com/login/oauth/authorize?client_id=${GITHUB_CLIENT_ID}&redirect_uri=${encodeURIComponent(redirectUri)}&scope=user:email&state=${state}`
|
const url = `https://github.com/login/oauth/authorize?client_id=${GITHUB_CLIENT_ID}&redirect_uri=${encodeURIComponent(redirectUri)}&scope=user:email&state=${state}`
|
||||||
window.location.href = url
|
window.location.href = url
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { API_BASE_URL, TWITTER_CLIENT_ID, toast } from '../main'
|
import { API_BASE_URL, TWITTER_CLIENT_ID, toast } from '../main'
|
||||||
|
import { WEBSITE_BASE_URL } from '../constants'
|
||||||
import { setToken, loadCurrentUser } from './auth'
|
import { setToken, loadCurrentUser } from './auth'
|
||||||
|
|
||||||
function generateCodeVerifier() {
|
function generateCodeVerifier() {
|
||||||
@@ -27,7 +28,7 @@ export async function twitterAuthorize(state = '') {
|
|||||||
if (state === '') {
|
if (state === '') {
|
||||||
state = Math.random().toString(36).substring(2, 15)
|
state = Math.random().toString(36).substring(2, 15)
|
||||||
}
|
}
|
||||||
const redirectUri = `https://www.open-isle.com/twitter-callback`
|
const redirectUri = `${WEBSITE_BASE_URL}/twitter-callback`
|
||||||
const codeVerifier = generateCodeVerifier()
|
const codeVerifier = generateCodeVerifier()
|
||||||
sessionStorage.setItem('twitter_code_verifier', codeVerifier)
|
sessionStorage.setItem('twitter_code_verifier', codeVerifier)
|
||||||
const codeChallenge = await generateCodeChallenge(codeVerifier)
|
const codeChallenge = await generateCodeChallenge(codeVerifier)
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.springframework.web.filter.OncePerRequestFilter;
|
|||||||
import org.springframework.web.cors.CorsConfiguration;
|
import org.springframework.web.cors.CorsConfiguration;
|
||||||
import org.springframework.web.cors.CorsConfigurationSource;
|
import org.springframework.web.cors.CorsConfigurationSource;
|
||||||
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
|
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import jakarta.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
@@ -40,6 +41,8 @@ public class SecurityConfig {
|
|||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
private final AccessDeniedHandler customAccessDeniedHandler;
|
private final AccessDeniedHandler customAccessDeniedHandler;
|
||||||
private final UserVisitService userVisitService;
|
private final UserVisitService userVisitService;
|
||||||
|
@Value("${app.website-url}")
|
||||||
|
private String websiteUrl;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public PasswordEncoder passwordEncoder() {
|
public PasswordEncoder passwordEncoder() {
|
||||||
@@ -76,8 +79,8 @@ public class SecurityConfig {
|
|||||||
"http://localhost",
|
"http://localhost",
|
||||||
"http://30.211.97.200:8080",
|
"http://30.211.97.200:8080",
|
||||||
"http://30.211.97.200",
|
"http://30.211.97.200",
|
||||||
"https://www.open-isle.com",
|
websiteUrl,
|
||||||
"https://open-isle.com"
|
websiteUrl.replace("://www.", "://")
|
||||||
));
|
));
|
||||||
cfg.setAllowedMethods(List.of("GET","POST","PUT","DELETE","OPTIONS"));
|
cfg.setAllowedMethods(List.of("GET","POST","PUT","DELETE","OPTIONS"));
|
||||||
cfg.setAllowedHeaders(List.of("*"));
|
cfg.setAllowedHeaders(List.of("*"));
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.openisle.model.User;
|
|||||||
import com.openisle.service.EmailSender;
|
import com.openisle.service.EmailSender;
|
||||||
import com.openisle.repository.UserRepository;
|
import com.openisle.repository.UserRepository;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@@ -13,6 +14,8 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
public class AdminUserController {
|
public class AdminUserController {
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
private final EmailSender emailSender;
|
private final EmailSender emailSender;
|
||||||
|
@Value("${app.website-url}")
|
||||||
|
private String websiteUrl;
|
||||||
|
|
||||||
@PostMapping("/{id}/approve")
|
@PostMapping("/{id}/approve")
|
||||||
public ResponseEntity<?> approve(@PathVariable Long id) {
|
public ResponseEntity<?> approve(@PathVariable Long id) {
|
||||||
@@ -20,7 +23,7 @@ public class AdminUserController {
|
|||||||
user.setApproved(true);
|
user.setApproved(true);
|
||||||
userRepository.save(user);
|
userRepository.save(user);
|
||||||
emailSender.sendEmail(user.getEmail(), "Registration Approved",
|
emailSender.sendEmail(user.getEmail(), "Registration Approved",
|
||||||
"Your account has been approved. Visit: https://www.open-isle.com");
|
"Your account has been approved. Visit: " + websiteUrl);
|
||||||
return ResponseEntity.ok().build();
|
return ResponseEntity.ok().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +33,7 @@ public class AdminUserController {
|
|||||||
user.setApproved(false);
|
user.setApproved(false);
|
||||||
userRepository.save(user);
|
userRepository.save(user);
|
||||||
emailSender.sendEmail(user.getEmail(), "Registration Rejected",
|
emailSender.sendEmail(user.getEmail(), "Registration Rejected",
|
||||||
"Your account request was rejected. Visit: https://www.open-isle.com");
|
"Your account request was rejected. Visit: " + websiteUrl);
|
||||||
return ResponseEntity.ok().build();
|
return ResponseEntity.ok().build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,3 +65,6 @@ openai.api-key=${OPENAI_API_KEY:}
|
|||||||
openai.model=${OPENAI_MODEL:gpt-4o}
|
openai.model=${OPENAI_MODEL:gpt-4o}
|
||||||
# AI markdown format usage limit per user per day (-1 for unlimited)
|
# AI markdown format usage limit per user per day (-1 for unlimited)
|
||||||
app.ai.format-limit=${AI_FORMAT_LIMIT:3}
|
app.ai.format-limit=${AI_FORMAT_LIMIT:3}
|
||||||
|
|
||||||
|
# Website URL for emails and redirects
|
||||||
|
app.website-url=${WEBSITE_URL:https://www.open-isle.com}
|
||||||
|
|||||||
Reference in New Issue
Block a user