diff --git a/src/views/Main.vue b/src/views/Main.vue
index fd488fb..3d4195c 100644
--- a/src/views/Main.vue
+++ b/src/views/Main.vue
@@ -36,6 +36,8 @@
+
+
@@ -173,6 +175,9 @@ const menuItems = [
const loggedInUser = ref(localStorage.getItem('username') || 'anonymous');
+// π’ [β
볡ꡬ] μ μ€λμλ λ‘κ·ΈμΈ μν μ²΄ν¬ computed ν¨μλ₯Ό μ μ리μ μμ 볡ꡬ μλ£
+const isLoggedIn = computed(() => !!authToken.value);
+
const rawAscii = `
βββββββββββββββ ββββββββ ββββββββββ ββββββ βββ
ββββββββββββββββββββββββββββββββββββββββββββββ
@@ -291,23 +296,20 @@ const fetchVideos = async () => {
const openVideo = (id) => window.open(`https://www.youtube.com/watch?v=${id}`);
const handleRegister = () => alert("νμκ°μ
μ νμ¬ κ΄λ¦¬μ μΉμΈμ λ‘ μ΄μλ©λλ€.");
-// π’ [UPGRADE] λ‘κ·Έμμ μ μ€ν λ¦¬μ§ λμ²μ λ° ν둬ννΈ μλ²½ 볡ꡬ
const handleLogout = () => {
localStorage.removeItem('token');
- localStorage.removeItem('username'); // π [μΆκ°] λΈλΌμ°μ μ λ¨μ μμ΄λ νκ΄΄
+ localStorage.removeItem('username');
authToken.value = null;
- loggedInUser.value = 'anonymous'; // π [μΆκ°] λ‘κ·ΈμΈ λ³μ κΈ°λ³Έκ° λ¦¬μ
+ loggedInUser.value = 'anonymous';
activeMenu.value = 'main';
if (termInstance.value) {
termInstance.value.echo(`\n[[b;red;][ALERT]] SESSION TERMINATED. USER LOGGED OUT.`);
- // π [μΆκ°] νλ¨ CRT λͺ¨λν°μ μμ΄λ λ¨λ§κΈ° ν둬ννΈλ anonymous(μ΅λͺ
) μνλ‘ μ¦μ κ°μ μμ볡ꡬ
termInstance.value.set_prompt(`anonymous@specialsource:~$ `);
}
};
-// π’ [UPGRADE] μ€λ³΅ μ°κΊΌκΈ°λ₯Ό μ§μ°κ³ μμλ₯Ό μ λ° μ λ ¬ν λ‘κ·ΈμΈ λͺ¨λ
const handleLoginSubmit = async () => {
if (!loginId.value || !loginPw.value) {
alert("μμ΄λμ λΉλ°λ²νΈλ₯Ό λͺ¨λ μ
λ ₯ν΄ μ£ΌμΈμ.");
@@ -337,7 +339,6 @@ const handleLoginSubmit = async () => {
});
if (response.data && response.data.token) {
- // 1) μ§μ λΆνκ² κ²Ήμ³μλ μ€ν λ¦¬μ§ μΈμ΄λΈ λ‘μ§ 1κ΅°λ°λ‘ μ΅μ ν μ λ ¬
localStorage.setItem('token', response.data.token);
localStorage.setItem('username', loginId.value);
@@ -700,22 +701,4 @@ iframe { width: 100%; height: 180px; border-radius: 4px; }
}
.monitor-header { padding: 4px 10px; font-size: 10px; }
}
-@keyframes blink { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } }
-
-/* μΌνμ± μ¬μ΄λ² κΈλ¦¬μΉ ν€νλ μ */
-@keyframes once-cyber-glitch-wobble {
- 0%, 25% { transform: translate(0) scale(1) skewX(0deg); color: var(--tui-color) !important; text-shadow: 0 0 8px var(--tui-glow) !important; opacity: 1; }
- 26% { transform: translate(-3px, 1.5px) scale(1.02); color: #ffffff !important; text-shadow: 2px 0 #ff0000, -2px 0 #0000ff !important; }
- 27% { transform: translate(3px, -1.5px) skewX(-2deg); color: var(--tui-color) !important; }
- 28% { transform: translate(-5px, 0) skewX(10deg); color: #ff00ff !important; text-shadow: -3px 0 magenta, 3px 0 cyan;}
- 29% { transform: translate(5px, 0) skewX(-10deg); color: #00ffff !important; text-shadow: 3px 0 magenta, -3px 0 cyan;}
- 30% { transform: translate(0); color: var(--tui-color) !important; text-shadow: 0 0 15px var(--tui-color) !important;}
- 31%, 50% { transform: translate(0); color: var(--tui-color) !important; text-shadow: 0 0 8px var(--tui-glow) !important;}
- 51% { transform: scale(1.05) skewY(1deg); color: #ffffff !important; opacity: 0.05; }
- 53% { opacity: 1; transform: translate(0); color: var(--tui-color) !important; text-shadow: 0 0 20px var(--tui-color), 0 0 40px var(--tui-glow) !important; }
- 90% { transform: translate(-2px, 1px); text-shadow: 2px 0 red, -2px 0 blue;}
- 92% { transform: translate(2px, -1px); text-shadow: -2px 0 red, 2px 0 blue;}
- 95% { transform: translate(0); color: var(--tui-color) !important; text-shadow: 0 0 20px var(--tui-color) !important;}
- 100% { transform: translate(0) scale(1) skewX(0deg); color: var(--tui-color) !important; text-shadow: 0 0 15px var(--tui-color), 0 0 30px var(--tui-glow) !important; opacity: 1; }
-}
\ No newline at end of file