diff --git a/.github/workflows/delete-merged-branch-config.yml b/.github/workflows/delete-merged-branch-config.yml new file mode 100644 index 000000000..d54933615 --- /dev/null +++ b/.github/workflows/delete-merged-branch-config.yml @@ -0,0 +1,14 @@ +name: delete branch on close pr + +on: + pull_request: + types: [closed] + +jobs: + delete-branch: + runs-on: ubuntu-latest + steps: + - name: delete branch + uses: SvanBoxel/delete-merged-branch@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/index.html b/index.html index 3db340463..e00f931cf 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,10 @@ - + + + + + + @@ -17,6 +22,8 @@ Linkbrary + + @@ -66,7 +73,6 @@

원하는 링크를 한 공간에 저장하세요

-
@@ -145,7 +151,6 @@

저장한 링크를

©codeit - 2023

- Privacy Policy FAQ diff --git a/js/sign.js b/js/sign.js new file mode 100644 index 000000000..a03c3e23c --- /dev/null +++ b/js/sign.js @@ -0,0 +1,15 @@ +function setmessage(a,b){ + let message = document.createElement("p"); + message.innerHTML = a; + message.classList.add("input_warning",b); + return message; +} +function wrong(a,b,c){ + if(b){ + c.parentElement.replaceChild(a, b); + }else{ + c.parentElement.append(a); + } +} + +export {setmessage,wrong} \ No newline at end of file diff --git a/js/sign_name.js b/js/sign_name.js new file mode 100644 index 000000000..3e7947706 --- /dev/null +++ b/js/sign_name.js @@ -0,0 +1,15 @@ +export const eye = document.querySelector('.eye'); +export const pwd = document.querySelector('#pwd'); +export const mail = document.querySelector("#mail"); +export const submit = document.querySelector("#submit"); +export const pwdWarning = eye.nextElementSibling; +export const mailWarning = mail.nextElementSibling; +export const email_format = /^([0-9a-zA-Z_\.-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/; +export const eye1 = document.querySelector('.eye1'); +export const eye2 = document.querySelector('.eye2'); +export const eyes = document.querySelector('.eye'); +export const pwd1 = document.querySelector('.pwd1'); +export const pwd2 = document.querySelector('.pwd2'); +export const input = document.querySelectorAll("input"); +export const upform = document.querySelectorAll("#signup_form"); +export const pwd_ei = /^[A-Za-z]+$|^\d+$/; diff --git a/js/signin.js b/js/signin.js new file mode 100644 index 000000000..2cf46e75d --- /dev/null +++ b/js/signin.js @@ -0,0 +1,10 @@ +import { eye_toggle, mail_focusout,login_go,pwd_focusout,input_ing} from "./signin_func.js" + +import {eye ,pwd ,mail, submit, pwdWarning,mailWarning,email_format} from "./sign_name.js" + +eye.addEventListener('click', eye_toggle); +mail.addEventListener("focusout",mail_focusout); +submit.addEventListener("click",login_go); +pwd.addEventListener("focusout", pwd_focusout); +mail.addEventListener("input",input_ing) +pwd.addEventListener("input",input_ing) \ No newline at end of file diff --git a/js/signin_func.js b/js/signin_func.js new file mode 100644 index 000000000..9f84c4caf --- /dev/null +++ b/js/signin_func.js @@ -0,0 +1,118 @@ +import {eye ,pwd ,mail, submit, pwdWarning,mailWarning,email_format} from "./sign_name.js" +import {setmessage, wrong} from "./sign.js" + +if(window.localStorage.getItem("codeitToken")){ + location.replace("../folder") +} + +function login_wrong_pwd(){ + let mailWarning = mail.nextElementSibling; + let pwdWarning = eye.nextElementSibling; + pwd.style.borderColor = "#ff5b56"; + let pwd_nologin = setmessage("비밀번호를 확인해주세요.") + if(pwdWarning || mailWarning){ + pwd.parentElement.replaceChild(pwd_nologin, pwdWarning); + }else if(pwdWarning && !mailWarning){ + pwd.parentElement.replaceChild(pwd_nologin, pwdWarning); + }else if(!pwdWarning && mailWarning){ + pwd.parentElement.append(pwd_nologin); + }else{ + pwd.parentElement.append(pwd_nologin); + } +} + +function login_wrong_mail(){ + let mailWarning = mail.nextElementSibling; + let mail_nologin = setmessage("이메일을 확인해주세요."); + mail.style.borderColor = "#ff5b56"; + if(pwdWarning || mailWarning){ + mail.parentElement.replaceChild(mail_nologin, mailWarning); + }else if(pwdWarning && !mailWarning){ + mail.parentElement.append(mail_nologin); + }else if(!pwdWarning && mailWarning){ + mail.parentElement.replaceChild(mail_nologin, mailWarning); + }else{ + mail.parentElement.append(mail_nologin); + } +} + +function eye_toggle(){ + for(let i = 0; i response.json()) + .then((result)=> {console.log(result.data.accessToken) + window.localStorage.setItem("codeitToken", result.data.accessToken) + }) + .catch((error)=>{console.log(error)}) + .finally(()=>{location.replace("../folder")}) + + }else if(mail.value === "test@codeit.com" && pwd.value !== "sprint101"){ + e.preventDefault() + login_wrong_pwd() + }else if(mail.value !== "test@codeit.com" && pwd.value !== "sprint101"){ + e.preventDefault() + login_wrong_pwd() + login_wrong_mail() + } +} +function pwd_focusout(){ + let pwdWarning = eye.nextElementSibling; + let pwd_null = setmessage("비밀번호를 입력해주세요.") + if(pwd.value === ""){ + pwd.style.borderColor = "#ff5b56"; + wrong(pwd_null,pwdWarning,pwd) + }else{ + pwd.style.borderColor = "#ccd5e3"; + } +} +function input_ing(e) { + if (e.target.name === "pwd") { + let eyeSibling = eye.nextElementSibling; + if (eyeSibling) { + eyeSibling.remove(); + } + } else { + let targetSibling = e.target.nextElementSibling; + if (targetSibling) { + e.target.parentElement.removeChild(targetSibling); + } + } +} + +export { eye_toggle, mail_focusout, login_go,pwd_focusout,input_ing}; \ No newline at end of file diff --git a/js/signup.js b/js/signup.js new file mode 100644 index 000000000..ac2a64343 --- /dev/null +++ b/js/signup.js @@ -0,0 +1,22 @@ +import {eye_toggle, mail_focusout, pwd_focusout, input_ing,login_go,keyenter} from "./signup_func.js" +import {eye1,eye2,pwd1, pwd2, mail, submit, input, email_format, pwd_ei,upform} from "./sign_name.js" + +eye1.addEventListener('click', function () { + eye_toggle(eye1, pwd1); +}); +eye2.addEventListener('click', function () { + eye_toggle(eye2, pwd2); +}); +pwd1.addEventListener("focusout", function(){ + pwd_focusout(pwd1, eye1) +}); +pwd2.addEventListener("focusout", function(){ + pwd_focusout(pwd2, eye2) +}); + +mail.addEventListener("focusout",mail_focusout); +mail.addEventListener("input",input_ing) +pwd1.addEventListener("input",input_ing) +pwd2.addEventListener("input",input_ing) +submit.addEventListener("click",login_go); +window.addEventListener("keypress",keyenter) \ No newline at end of file diff --git a/js/signup_func.js b/js/signup_func.js new file mode 100644 index 000000000..16b77208b --- /dev/null +++ b/js/signup_func.js @@ -0,0 +1,117 @@ +import {eye1,eye2,pwd1, pwd2, mail, email_format, pwd_ei,upform, pwd} from "./sign_name.js" +import {wrong, setmessage} from "./sign.js" + +if(window.localStorage.getItem("codeitToken")){ + location.replace("../folder") +} + +function eye_toggle(eye, pwd){ + for(let i = 0; i 8 || !pwd_ei.test(pwd.value) && pwd1.value == pwd2.value && pwd1.value!==""&& pwd2.value!==""){ + pwd1.style.borderColor = "#ccd5e3"; + pwd2.style.borderColor = "#ccd5e3"; + pwdWarning.remove(); + pwdWarning2.remove(); + }else{ + pwd.style.borderColor = "#ccd5e3"; + if (pwdWarning) pwdWarning.remove(); + } +} +function input_ing(e) { + if (e.target.name === "pwd1" || e.target.name === "pwd2") { + const eye = (e.target.name === "pwd1") ? eye1 : eye2; + eye.nextElementSibling.remove(); + } +} + +async function login_go(e){ + e.preventDefault() + let mail_eight = setmessage("이미 사용 중인 이메일입니다.",'mail'); + let mailWarning = mail.nextElementSibling; + + const mailcheck = { + email: mail.value, + } + try{ + const response = await fetch("https://bootcamp-api.codeit.kr/api/check-email",{ + method : 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body : JSON.stringify(mailcheck), + }) + const result = await response.json() + const message = result.error ? result.error.message : null; + console.log(message) + if(message === "이미 존재하는 이메일입니다."){ + e.preventDefault() + mail.style.borderColor = "#ff5b56"; + wrong(mail_eight,mailWarning,mail); + }else if(pwd1.value === pwd2.value){ + const signup = { + email: mail.value, + password: pwd1.value, + }; + const responseSignUp = await fetch("https://bootcamp-api.codeit.kr/api/sign-up", { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(signup), + }); + + const resultSignUp = await responseSignUp.json(); + window.localStorage.setItem("codeitToken", resultSignUp.data.accessToken) + location.replace("../folder") + } + } catch(error){ + console.log(error) + } + +} +function keyenter(e){ + if(e.key === 'Enter'){ + console.log(123) + upform.submit() + } +} +export {eye_toggle, mail_focusout, pwd_focusout, input_ing,login_go,keyenter} \ No newline at end of file diff --git a/js/signup_let.js b/js/signup_let.js new file mode 100644 index 000000000..e8e99d670 --- /dev/null +++ b/js/signup_let.js @@ -0,0 +1,11 @@ +export let eye1 = document.querySelector('.eye1'); +export let eye2 = document.querySelector('.eye2'); +export let eyes = document.querySelector('.eye'); +export let pwd1 = document.querySelector('.pwd1'); +export let pwd2 = document.querySelector('.pwd2'); +export let mail = document.querySelector("#mail"); +export let submit = document.querySelector("#submit"); +export let input = document.querySelectorAll("input"); +export let upform = document.querySelectorAll("#signup_form"); +export let email_format = /^([0-9a-zA-Z_\.-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/; +export const pwd_ei = /^[A-Za-z]+$|^\d+$/; diff --git a/signin/index.html b/signin/index.html index 1542c48d0..7a561c19f 100644 --- a/signin/index.html +++ b/signin/index.html @@ -8,7 +8,7 @@ signup - + @@ -29,7 +29,7 @@

logo

- +
eye-off eye-on diff --git a/signup/index.html b/signup/index.html index 0c05d9294..846d428f9 100644 --- a/signup/index.html +++ b/signup/index.html @@ -6,6 +6,7 @@ signup + @@ -15,24 +16,35 @@

logo

이미 회원이신가요? 로그인 하기

-
+
- - - +
+ + +
- -
- - eye-off +
+ +
+ +
+ eye-off + eye-on +
+
- -
+
+ +
+ +
+ eye-off + eye-on +
+
- - eye-off
@@ -49,4 +61,3 @@

logo

kakao로 가입하기
- diff --git a/style.css b/style.css index 7cf9619bc..1f80ee1b2 100644 --- a/style.css +++ b/style.css @@ -13,7 +13,7 @@ ol { a { text-decoration: none; - color: inherit + color: inherit; } :root { @@ -51,7 +51,6 @@ header { z-index: 1; } - .header_inner { width: 100%; max-width: 152.0rem; @@ -61,8 +60,6 @@ header { justify-content: space-between; align-items: center; } - - .header_inner h1 { width: 13.3rem; height: 2.4rem; @@ -308,9 +305,18 @@ main { gap: 1.2rem; } +.login .sign_form form .write .input_warning { + margin-top: 0.3rem; + text-align: left; + color: var(--red); + font-size: 1.4rem; +} + .login .sign_form form .write label { font-size: 1.4rem; font-weight: 400; + margin-bottom: 1.5rem; + display: block; } .login .sign_form form .write input { @@ -330,13 +336,16 @@ main { .login .sign_form .pwd .eye { position: absolute; - top: 50%; + top: 1.8rem; right: 1.5rem; - transform: translateY(-50%); + /* transform: translateY(-50%); */ cursor: pointer; width: 1.6rem; } +.login .sign_form .pwd .eye_none { + display: none; +} .login .sign_form form #submit { padding: 1.6rem 2.0rem; border-radius: 0.8rem; @@ -533,4 +542,3 @@ body .sec .mobile_text { /* ? */ @media all and (max-width:374px) {} - diff --git a/week4-signin.png b/week4-signin.png new file mode 100644 index 000000000..feb807ae0 Binary files /dev/null and b/week4-signin.png differ diff --git a/week4-signup.png b/week4-signup.png new file mode 100644 index 000000000..b2bff1d53 Binary files /dev/null and b/week4-signup.png differ