YNICTE/FO/Views/Account/Join.cshtml

336 lines
19 KiB
Plaintext

@using NP.Model.ENUM
@model NP.Model.VMUser
@{
var menus = (List<NP.Model.MenuPage>)ViewBag.Menus;
var em = new NP.Model.MenuPage();
var mainprivate = (menus.Where(w => w.refcode == "main.private").FirstOrDefault() ?? em);
var mainagree = (menus.Where(w => w.refcode == "main.agree").FirstOrDefault() ?? em);
var naverClientId = ViewBag.naverClientID;
var kakaoClientId = ViewBag.kakaoClientID;
var googleClientId = ViewBag.googleClientID;
}
<head>
<script type="text/javascript" src="/js/naveridlogin_js_sdk_2.0.0.js"></script>
<script type="text/javascript" src="/js/kakao.js"></script>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="@googleClientId">
</head>
<div class="g-signin2" data-onsuccess="onGoogleLogIn" style="display:none"></div> @*구글로그인관련*@
@if (ViewBag.JoinOK)
{
<ul class="jnStep">
<li><div><div><span>1. 본인인증</span></div></div></li>
<li><div><div><span>2. 신청서 작성</span></div></div></li>
<li class="current"><div><div><span>3. 회원가입완료</span></div></div></li>
</ul>
<div class="joinScss">
<h5>회원가입이 완료되었습니다.</h5>
<p>아래 버튼을 클릭해주셔서 로그인을 진행해주세요.</p>
<a href="/Account/Index" class="blu">로그인 페이지로 이동</a>
</div>
}
else
{
<ul class="jnStep">
<li><div><div><span>1. 본인인증</span></div></div></li>
<li class="current"><div><div><span>2. 신청서 작성</span></div></div></li>
<li><div><div><span>3. 회원가입완료</span></div></div></li>
</ul>
<form action="/Account/Join" id="mform" method="post">
@Html.HiddenFor(w => w.User.birthday)
@Html.HiddenFor(w => w.User.username)
@Html.HiddenFor(w => w.User.mobile)
@Html.HiddenFor(w => w.User.vssn)
@Html.HiddenFor(w => w.User.di)
@Html.HiddenFor(w => w.User.ci)
@*모바일인증*@
@Html.HiddenFor(w => w.intval2)
@*가입유형 0:일반회원가입,1:google,2:naver,3:카카오*@
@Html.HiddenFor(w => w.User.jointype)
@Html.HiddenFor(w => w.User.authplatform)
@Html.HiddenFor(w => w.IsSaveOK)
<input type="hidden" name="jointype" id="jointype" value="@(Model.User.jointype)" />
<input type="hidden" name="birthday" id="birthday" value="@(Model.User.birthday)" />
<input type="hidden" name="di" id="di" value="@(Model.User.di)" />
<input type="hidden" name="ci" id="ci" value="@(Model.User.ci)" />
<input type="hidden" name="vssn" id="vssn" value="@(Model.User.vssn)" />
<input type="hidden" name="userpno" id="userpno" />
<input type="hidden" name="intval" id="intval" value="0" />
<input type="hidden" name="authplatform" id="authplatform" value="@(Model.User.authplatform.GetHashCode())" />
<div class="joinForm">
<ul>
<li>
<p class="subDsc">※아래 기재사항은 필수 입니다 빈칸 없이 기재해주세요.</p>
</li>
<li>
@if (Model.User.authplatform == AuthPlatform.IPIN)
{
<p class="subDsc">※[i-PIN 인증] 으로 본인인증을 하였습니다. 학습 시 본인인증도 [i-PIN 인증]으로 본인인증을 진행합니다.</p>
}
else if (Model.User.authplatform == AuthPlatform.Mobile)
{
<p class="subDsc">※[휴대폰 본인인증] 으로 본인인증을 하였습니다. 학습 시 본인인증도 [휴대폰 인증]으로 본인인증을 진행합니다.</p>
}
</li>
<li>
<p class="subDsc">※학습 본인인증 수단은 회원가입 후 회원정보수정에서 변경 가능합니다.</p>
</li>
<li><input type="text" id="username" name="username" placeholder="이름" value="@(Model.User.username)" @(!string.IsNullOrEmpty(Model.User.username) ? Html.Raw("readonly=\"\" style=\"background-color:#ddd;\"") : Html.Raw(""))></li>
<li><input type="text" id="email" style="ime-mode:inactive" name="email" maxlength="50" placeholder="이메일"></li>
<li class="joinId">
<input type="text" id="userid" style="ime-mode:inactive" name="userid" placeholder="아이디" maxlength="50">
<input type="text" id="snsid" name="snsid" maxlength="50" style="display:none">
<a href="#" onclick="idcheck();">중복여부 체크</a>
</li>
<li>
<input type="password" id="userpass" name="userpass" placeholder="비밀번호">
<span class="red">영어, 숫자, 특수문자를 모두 포함하여 비밀번호를 설정해주세요.</span>
</li>
<li><input type="password" id="userpass2" placeholder="비밀번호확인"></li>
<li>
<ul class="jnNum">
<li><input type="text" id="userpno1" maxlength="6" class="int nocomma" value="@(!string.IsNullOrEmpty(Model.User.birthday) && Model.User.birthday.Length > 3 ? (Model.User.birthday ?? "").Substring(2) : "")" @(!string.IsNullOrEmpty(Model.User.birthday) ? Html.Raw("readonly=\"\" style=\"background-color:#ddd;\"") : Html.Raw(""))></li>
<li>-</li>
<li><input type="tel" id="userpno2" maxlength="7" class="int nocomma" placeholder="주민등록번호 뒤 7자리"></li>
</ul>
</li>
<li>
<input type="text" id="mobile" class="int nocomma" name="mobile" maxlength="13" placeholder="휴대전화번호" value="@(Model.User.mobile)" @(string.IsNullOrEmpty(Model.User.mobile) ? "" : "readonly style=\"background-color:#ddd;\"" ) >
</li>
<li>
<ul class="jnAddr postbox">
<li>
<input type="hidden" id="post" name="post" class="postno" readonly="" style="background-color:#ddd;">
<input type="text" name="address1" id="address1" class="postadr" readonly="" style="background-color:#ddd;" placeholder="주소입력">
</li>
<li><a href="#" onclick="getpost2(this);">우편번호검색</a></li>
<li><input type="text" name="address2" id="address2" class="postadrsub" placeholder="나머지 주소 입력"></li>
</ul>
</li>
<li>
<ul class="jnType">
<li><input type="radio" name="isCompany" value="0" id="isCompany0" checked><label for="isCompany0">개인</label></li>
<li><input type="radio" name="isCompany" value="1" id="isCompany1"><label for="isCompany1">업체</label></li>
</ul>
</li>
<li class="joinCpny">
<input type="hidden" id="asno" name="asno" />
<input type="text" id="asname" placeholder="직장" readonly="readonly" disabled style="background-color: #ddd;" />
<a href="#" id="btnassign" style="background-color: #ddd;">검색</a>
</li>
<li>
<ul class="jnType">
<li><input type="radio" name="slevel" value="1" id="lv1"><label for="lv1">고졸</label></li>
<li><input type="radio" name="slevel" value="2" id="lv2"><label for="lv2">학사</label></li>
<li><input type="radio" name="slevel" value="3" id="lv3"><label for="lv3">석사</label></li>
<li><input type="radio" name="slevel" value="4" id="lv4"><label for="lv4">박사</label></li>
<li><input type="radio" name="slevel" value="5" id="lv0"><label for="lv0">기타</label></li>
</ul>
</li>
</ul>
<div class="joinAgree">
<input type="checkbox" id="agree">
<label for="agree"><a href="#" onclick="viewlayer(@(mainagree.pno), this, '이용약관');">이용약관,</a> <a href="#" onclick="viewlayer(@(mainprivate.pno), this, '개인정보처리방침');">개인정보 처리방침</a>에 동의합니다.</label>
<label>개인정보처리방침 상세 내용은 화면 하단에 위치하고 있습니다.</label>
</div>
<a href="#" class="joinBtn" onclick="save()">동의 후 가입</a>
</div>
@Html.Partial("./Partial/BoxAssign", null, new ViewDataDictionary { { "bindmethod", "bindassign" }, { "isjoin", 1 } })
@Html.Partial("./Partial/OkCert3", null, new ViewDataDictionary { })
</form>
<div id="postlayer" class="daumpost"><a href="#" class="btn btn-xxs btn-select closedaumpost" onclick="closeDaumPostcode();">close</a></div>
}
@section scriptsHeader{
@Html.Partial("./Partial/ScriptPost")
}
<script>
function bindassign(v) {
$("#asno").val(v.split(':')[0]);
$("#asname").val(v.split(':')[1]);
}
$(document).ready(function () {
if ('@(ViewBag.JoinOK?1:0)' == '1') {
$("#pageTitle h3").text("회원가입 완료");
}
snsLogin();
$("input:radio[name='isCompany']").on("click", function () {
var isCompany = $(this).val();
if (isCompany == "0") {
setv("asno", "");
setv("asname", "");
$("#btnassign").off("click");
$("#btnassign").css("background-color", "#ddd");
} else {
$("#btnassign").on("click", function () {
boxassignview();
});
$("#btnassign").css("background-color", "#666");
}
});
});
function save() {
setv("userid", val("userid").replace(/ /, '').replace(/ /, ''));
setv("userpno", val("userpno1").replace(/ /, '').replace(/ /, '') + "" + val("userpno2").replace(/ /, '').replace(/ /, ''));
setv("userpass", val("userpass").replace(/ /, '').replace(/ /, ''));
setv("username", val("username").replace(/ /, '').replace(/ /, ''));
setv("email", val("email").replace(/ /, '').replace(/ /, ''));
setv("mobile", val("mobile").replace(/ /, '').replace(/ /, ''));
setv("mobile", formatmobile(val("mobile")));
//var userid = val("userid").replace(/[^(0-9a-zA-Z)]/gi, '');
if (check("username", null, "이름을 입력해주세요.")) { }
else if (check("email", null, "이메일주소를 입력해주세요.")) { }
else if (!isemail(val("email"))) { focus("email"); msg("올바른 이메일주소를 입력해주세요."); }
else if (check("userid", null, "아이디를 입력해주세요.")) { }
else if (getBytes(val("userid")) < 5) { focus("userid"); msg("(5자이상, 영문/숫자/-/_) 규칙으로 아이디를 입력해주세요."); }
else if (!isid(val("userid"))) { focus("userid"); msg("(5자이상, 영문/숫자/-/_) 규칙으로 아이디를 입력해주세요."); }
else if (val("IsSaveOK") != 1) { focus("userid"); msg("중복여부체크를 진행해주세요"); }
else if (check("userpass", null, "비밀번호를 입력해주세요.")) { }
else if (!ispassword(val("userpass"))) { focus("userpass"); msg("(8자 이상, 영문/숫자/특수기호 포함) 규칙으로 비밀번호를 입력해주세요."); }
else if (val("userpass") != val("userpass2")) { focus("userpass2"); msg("비밀번호 확인이 다릅니다."); }
else if (check("userpno", null, "주민등록번호를 입력해주세요")) { }
else if (getBytes(val("userpno1")) != 6 || getBytes(val("userpno2")) != 7) { focus("userpno2"); msg("주민등록번호를 확인해주세요"); }
else if (!ismobilenumber(val("mobile"))) {focus("mobile");msg("핸드폰번호를 확인해주세요.");}
else if (check("post", null, "우편번호를 등록해주세요.") || check("address1", null, "우편번호를 등록해주세요.") || check("address2", null, "우편번호를 등록해주세요.")) { }
else if ($("input:radio[name='isCompany']:checked").val() == "1" && check("asno", null, "직장을 등록해주세요.")) { }
else if ($("input:radio[name='slevel']:checked").val() == null) { msg("학력을 선택해주세요"); }
else if (!$("#agree").prop("checked")) { $("#agree").focus(); msg("이용약관/개인정보처리방침에 동의해주세요."); }
else {
cap("/focommon/join", "mform", "cbsave");
}
}
function idcheck() {
if (check("userid", null, "아이디를 입력해주세요.")) { }
else if (getBytes(val("userid")) < 5) { focus("userid"); msg("(5자이상, 영문/숫자/-/_) 규칙으로 아이디를 입력해주세요."); }
else if (!isid(val("userid"))) { focus("userid"); msg("(5자이상, 영문/숫자/-/_) 규칙으로 아이디를 입력해주세요."); }
else {
capp("/focommon/idchk", { id: val("userid") }, "cbidchk");
}
}
function cbidchk() {
if (capResult.code == 1000) {
setv("IsSaveOK", 1);
msg("사용가능한 아이디입니다.");
} else {
focus("userid");
msg("이미 사용중인 아이디입니다.<br />다른 아이디를 사용해주세요.");
}
}
function cbsave() {
if (capResult.code == 1000) {
setv("intval", 1);
$("#mform").submit();
}
else if (capResult.obj == -1) {
focus("userid");
msg("이미 사용중인 아이디입니다.<br />다른 아이디를 사용해주세요.");
}
else if (capResult.obj == -2) {
focus("email");
msg("이미 사용중인 이메일입니다.<br />다른 이메일을 사용해주세요.");
}
else if (capResult.obj == -3) {
focus("mobile");
msg("이미 사용중인 핸드폰번호입니다.<br />다른 번호를 사용해주세요.");
}
}
function mobchk() {
//한번 인증되면 재인증 불가
if ($("#intval2").val() == 1 && $("#mobile").val() != null) {
msg("휴대폰 인증이 완료되었습니다.");
} else {
mobilechkview('MCHK');
}
}
function onGoogleLogIn(googleUser) {
if ("@(Request["jointype"])" == "1") {
var profile = googleUser.getBasicProfile();
$("#username").val(profile.getName());
$("#email").val(profile.getEmail());
$("#snsid").val(profile.getId());
$("#jointype").val(1); //0:일반회원가입,1:google,2:naver,3:kakao
$("#username").prop("readonly", "readonly");
$("#username").css("background-color", "#ddd");
$("#email").prop("readonly", "readonly");
$("#email").css("background-color", "#ddd");
}
}
function snsLogin() {
if ("@(Request["jointype"])" == "2") {
var naverLogin = new naver.LoginWithNaverId(
{
clientId: "@naverClientId",
callbackUrl: "https://www.cte.or.kr/Account/Join?jointype=2",
isPopup: false,
callbackHandle: true
}
);
naverLogin.init();
naverLogin.getLoginStatus(function (status) {
if (status) {
var email = naverLogin.user.getEmail();
var name = naverLogin.user.getName();
var uniqId = naverLogin.user.getId();
var profileImage = naverLogin.user.getProfileImage();
var birthday = naverLogin.user.getBirthday();
var age = naverLogin.user.getAge();
if (email == undefined || email == null) {
alert("이메일은 필수정보입니다. 정보제공을 동의해주세요.");
naverLogin.reprompt();
return;
}
if (name == undefined || name == null) {
alert("이름은 필수정보입니다. 정보제공을 동의해주세요.");
naverLogin.reprompt();
return;
}
$("#username").val(name);
$("#email").val(email);
$("#snsid").val(uniqId);
$("#jointype").val(2); //0:일반회원가입,1:google,2:naver,3:kakao
$("#username").prop("readonly", "readonly");
$("#username").css("background-color", "#ddd");
$("#email").prop("readonly", "readonly");
$("#email").css("background-color", "#ddd");
} else {
alert("네이버 AccessToken이 올바르지 않습니다. 관리자에게 문의하세요. error status[" + status + "]");
}
});
}
if ("@(Request["jointype"])" == "3") {
$.when(
Kakao.init("@kakaoClientId"),
).done(function () {
Kakao.API.request({
url: '/v2/user/me',
success: function (res) {
$("#username").val(res.properties.nickname);
if (res.kakao_account.email != null && res.kakao_account.email != "" && res.kakao_account.email != undefined) {
$("#email").val(res.kakao_account.email);
$("#email").prop("readonly", "readonly");
$("#email").css("background-color", "#ddd");
}
$("#snsid").val(res.id);
$("#jointype").val(3); //0:일반회원가입,1:google,2:naver,3:kakao
$("#username").prop("readonly", "readonly");
$("#username").css("background-color", "#ddd");
},
fail: function (error) {
console.log(error);
}
});
});
}
}
</script>