public ActionResult <BoardListResultModel> List() { ApiResultReady rrResult = new ApiResultReady(this); BoardListResultModel armResult = new BoardListResultModel(); rrResult.ResultObject = armResult; //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Admin); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { armResult.List = db1.Board.ToList(); }//end using db1 } else { //에러 rrResult.InfoCode = typePC.ToString(); } return(rrResult.ToResult()); }
/// <summary> /// 지정된 관리 등급보다 내가 높은 권한 등급을 가지고 있는지 확인한다. /// </summary> /// <param name="nUserId"></param> /// <param name="typeMgtClass"></param> /// <returns></returns> public ManagementClassCheckType MgtClassCheck( long nUserId , ManagementClassType typeMgtClass) { ManagementClassCheckType typePCReturn = ManagementClassCheckType.None; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //내정보 찾기 UserInfo ui = db1.UserInfo .Where(m => m.idUser == nUserId) .FirstOrDefault(); if (null == ui) {//검색 대상이 없다. typePCReturn = ManagementClassCheckType.NoUser; } else { if (ui.MgtClass > typeMgtClass) {//권한이 없다. typePCReturn = ManagementClassCheckType.NoPer; } else {//권한이 있다. typePCReturn = ManagementClassCheckType.Ok; } } }//end using db1 return(typePCReturn); }
public ActionResult <SettingListResultModel> SettingList() { ApiResultReady rrResult = new ApiResultReady(this); SettingListResultModel armResult = new SettingListResultModel(); rrResult.ResultObject = armResult; //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Root); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //세팅 리스트 armResult.SettingList = db1.Setting_Data .OrderBy(m => m.Number) .ToArray(); }//end using db1 } else { //에러 rrResult.InfoCode = ApiResultType.PermissionCheckError.ToString(); } return(rrResult.ToResult(armResult)); }
public ActionResult <ApiResultBaseModel> SignEmailCheck(string sEmail) { //리턴 보조 ApiResultReady armResult = new ApiResultReady(this); using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { User findUser = db1.User .Where(m => m.SignEmail == sEmail) .FirstOrDefault(); if (null == findUser) {//성공 armResult.InfoCode = "0"; } else {//이미 있음 armResult.InfoCode = "-1"; armResult.Message = "이미 사용중인 아이디 입니다."; } } return(armResult.ToResult(null)); }
/// <summary> /// DB에 로그 남기기 /// </summary> /// <param name="nLogLevel">로그 수준</param> /// <param name="typeSignLog"></param> /// <param name="idUser"></param> /// <param name="sMessage"></param> public static void LogAdd_DB( int nLogLevel , UserSignLogType typeSignLog , long idUser , string sMessage) { if (nLogLevel <= GlobalStatic.SignLogLevel) { //기준 날짜 DateTime dtNow = DateTime.Now; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { UserSignLog newSL = new UserSignLog(); newSL.AddDate = dtNow; newSL.Level = nLogLevel; newSL.SignLogType = typeSignLog; newSL.idUser = idUser; newSL.Contents = sMessage; db1.UserSignLog.Add(newSL); db1.SaveChanges(); } //end using db1 } } //end LogAdd_DB
/// <summary> /// DB에서 세팅 정보를 불러 메모리에 저장한다. /// DB에서 세팅을 수정하였다면 이 함수를 호출하여 메모리를 갱신해야한다. /// </summary> public void Setting_Load() { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { Setting_Data = db1.Setting_Data .ToList(); } }
public ActionResult <ApiResultBaseModel> Edit( [FromForm] long nBoardId , [FromForm] string sTitle , [FromForm] short nShowCount , [FromForm] BoardStateType typeBoardState , [FromForm] BoardFacultyType typeBoardFaculty , [FromForm] BoardAuthorityType nAuthorityDefault , [FromForm] string sMemo) { ApiResultReady armResult = new ApiResultReady(this); //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Admin); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { Board findBoard = db1.Board .Where(m => m.idBoard == nBoardId) .FirstOrDefault(); if (null != findBoard) { findBoard.Title = sTitle; findBoard.ShowCount = nShowCount; findBoard.BoardState = typeBoardState; findBoard.BoardFaculty = (BoardFacultyType)typeBoardFaculty; findBoard.AuthorityDefault = (BoardAuthorityType)nAuthorityDefault; findBoard.Memo = sMemo; db1.SaveChanges(); //게시판 정보 json으로 저장 GlobalStatic.FileProc.WWW_Json_BoardInfo(); } else { armResult.InfoCode = typePC.ToString(); armResult.Message = "대상이 없습니다."; } }//end using db1 } else { //에러 armResult.InfoCode = ApiResultType.PermissionCheckError.ToString(); armResult.Message = "권한이 없습니다."; } return(armResult.ToResult()); }
/// <summary> /// 자기가 사용할 수 있는 유저 정보를 준다. /// 내가 소유자면 uiUse와 uiMy가 같은 정보다. /// 내가 직원이면 uiUse와 uiMy가 다른 정보가 들어간다. /// </summary> /// <param name="nUserId"></param> /// <param name="uiUse"></param> /// <param name="uiMy"></param> public void UserInfoGet( long nUserId , out UserInfo uiUse , out UserInfo uiMy) { UserInfo uiUseTemp = null; UserInfo uiMyTemp = null; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //내정보 찾기 uiMyTemp = db1.UserInfo .Where(m => m.idUser == nUserId) .FirstOrDefault(); if (null != uiMyTemp) { switch (uiMyTemp.MgtClass) { case ManagementClassType.Root: case ManagementClassType.Admin: case ManagementClassType.User: //내가 소유주다. //검색된 내용이 내 정보다. uiUseTemp = uiMyTemp; break; case ManagementClassType.RootDev: case ManagementClassType.AdminEmployee: //내가 직원이다. //부모 정보를 검색한다. uiUseTemp = db1.UserInfo .Where(m => m.idUser == uiMyTemp.idUser_Parent) .FirstOrDefault(); break; case ManagementClassType.RootTest: case ManagementClassType.AdminTest: case ManagementClassType.TestUser: //테스트 계정 //내 정보를 사용한다. uiUseTemp = uiMyTemp; break; //여긴 디폴트가 필요 없다. } } //검색 결과 저장 uiUse = uiUseTemp; uiMy = uiMyTemp; } //end using db1 } //end UserInfoGet
public ActionResult <ApiResultBaseModel> TestPostAdd( [FromForm] int nBoardId) { ApiResultReady rrResult = new ApiResultReady(this); DateTime dtNow = DateTime.Now; int nCount = 0; //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Admin); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { for (int i = 0; i < 300; ++i) { ++nCount; //포스트 BoardPost newBP = new BoardPost(); newBP.idBoard = nBoardId; newBP.idUser = cm.id_int; newBP.Title = string.Format("테스트용 데이터 {0} - {1} ", nCount, dtNow); newBP.WriteDate = dtNow; db1.BoardPost.Add(newBP); db1.SaveChanges(); //컨탠츠 BoardContent newBC = new BoardContent(); newBC.idBoard = newBP.idBoard; newBC.idBoardPost = newBP.idBoardPost; newBC.Content = string.Format("테스트용 내용 {0} - {1} ", nCount, dtNow); db1.BoardContent.Add(newBC); db1.SaveChanges(); } }//end using db1 } else { //에러 rrResult.InfoCode = ApiResultType.PermissionCheckError.ToString(); } return(rrResult.ToResult()); }
public ActionResult <ApiResultObjectModel> SettingSet( [FromForm] Setting_Data s_dTossData) { ApiResultReady rrResult = new ApiResultReady(this); ApiResultObjectModel armResult = new ApiResultObjectModel(); rrResult.ResultObject = armResult; //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Root); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //수정할 개체 선택 Setting_Data s_dSelect = db1.Setting_Data .Where(m => m.idSetting_Data == s_dTossData.idSetting_Data) .FirstOrDefault(); if (null != s_dSelect) { //데이터 수정 s_dSelect.Number = s_dTossData.Number; s_dSelect.Name = s_dTossData.Name; s_dSelect.OpenType = s_dTossData.OpenType; s_dSelect.ValueData = s_dTossData.ValueData; s_dSelect.Description = s_dTossData.Description; //DB 저장 db1.SaveChanges(); } else { rrResult.InfoCode = "1"; rrResult.Message = "수정할 대상이 없습니다."; } }//end using db1 } else { //에러 rrResult.InfoCode = ApiResultType.PermissionCheckError.ToString(); } return(rrResult.ToResult(armResult)); }
[Authorize]//OAuth2 인증 설정 public ActionResult <string> SignOut( [FromForm] string sRefreshToken) { ApiResultReady rrResult = new ApiResultReady(this); //API 호출 시간 DateTime dtNow = DateTime.Now; //인증 정보에서 유저 정보 추출 var identity = (ClaimsIdentity)User.Identity; ClaimModel cm = new ClaimModel(identity.Claims); //사인아웃 시도 기록 GlobalSign.LogAdd_DB( 1 , ModelDB.UserSignLogType.SignOut , cm.id_int , string.Format("SignOut 시도 : {0}", cm.email)); using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //기존 로그인한 유저 검색 UserSignIn[] arrSL = db1.UserSignIn .Where(m => m.idUser == cm.id_int) .ToArray(); //기존 로그인한 유저 정보 제거 db1.UserSignIn.RemoveRange(arrSL); //db 적용 db1.SaveChanges(); } //리플레시 토큰 제거 if ((null != sRefreshToken) && (string.Empty != sRefreshToken)) { TokenRevocationResponse trr = GlobalStatic.TokenProc .RevocationTokenAsync(sRefreshToken) .Result; } //로컬 인증 쿠키 삭제 요청 HttpContext.SignOutAsync(); //임시로 아이디를 넘긴다. return(rrResult.ToResult()); }
public ActionResult <ApiResultBaseModel> Create( [FromForm] string sTitle , [FromForm] BoardStateType typeBoardState , [FromForm] BoardAuthorityType nAuthorityDefault , [FromForm] string sMemo) { ApiResultReady rrResult = new ApiResultReady(this); DateTime dtNow = DateTime.Now; //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Admin); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { Board newBoard = new Board(); newBoard.Title = sTitle; newBoard.BoardState = typeBoardState; newBoard.AuthorityDefault = (BoardAuthorityType)nAuthorityDefault; //기능 설정 newBoard.BoardFaculty |= BoardFacultyType.ShowCount_Server; newBoard.ShowCount = 10; newBoard.Memo = sMemo; newBoard.CreateDate = dtNow; db1.Board.Add(newBoard); db1.SaveChanges(); //게시판 정보 json으로 저장 GlobalStatic.FileProc.WWW_Json_BoardInfo(); }//end using db1 } else { //에러 rrResult.InfoCode = ApiResultType.PermissionCheckError.ToString(); rrResult.Message = "권한이 없습니다."; } return(rrResult.ToResult()); }
}//end WWW_Json /// <summary> /// 게시판 정보 json으로 저장 - 유저에게 보낼 게시판 정보 /// </summary> public void WWW_Json_BoardInfo() { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //json 파일로 저장******************************* List <BoardListInfoModel> listBoard = db1.Board .Select(m => new BoardListInfoModel(m)) .ToList(); WWW_Json( @"Faculty\Board\BoardInfo.json" , listBoard); } }
/// <summary> /// 아이디 검색 /// </summary> /// <param name="nID"></param> /// <returns></returns> public UserRepositoryModel FindById(int nID) { UserAuthModel userReturn = new UserAuthModel(); using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { User mgrItem = db1.User .FirstOrDefault(x => x.idUser == nID); userReturn.ManagerAuth_Set(mgrItem); } return(this.ToUserRepositoryModel(userReturn)); }
public ActionResult <ApiResultBaseModel> AuthEdit( [FromForm] long nBoardAuthority , [FromForm] int nAuthority , [FromForm] int nAuthState , [FromForm] string sMemo) { ApiResultReady rrResult = new ApiResultReady(this); DateTime dtNow = DateTime.Now; //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Admin); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //수정할 권한 찾기 BoardAuthority findBA = db1.BoardAuthority .Where(m => m.idBoardAuthority == nBoardAuthority) .FirstOrDefault(); if (null == findBA) { rrResult.InfoCode = "-1"; rrResult.Message = "수정할 대상을 찾지 못했습니다."; } else { findBA.Authority = (BoardAuthorityType)nAuthority; findBA.AuthState = (BoardAuthorityStateType)nAuthState; findBA.Memo = sMemo; findBA.EditDate = dtNow; db1.SaveChanges(); } }//end using db1 } return(rrResult.ToResult()); }
/// <summary> /// 이름 검색 /// </summary> /// <param name="sEmail"></param> /// <returns></returns> public UserRepositoryModel FindByEmail(string sEmail) { UserAuthModel userAuth = null; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { User mgrItem = db1.User .FirstOrDefault(x => x.SignEmail == sEmail); if (mgrItem != null) { userAuth = new UserAuthModel(mgrItem); } } return(this.ToUserRepositoryModel(userAuth)); }
public ActionResult <BoardAuthListResultModel> AuthList(long nBoardId) { ApiResultReady rrResult = new ApiResultReady(this); BoardAuthListResultModel armResult = new BoardAuthListResultModel(); rrResult.ResultObject = armResult; //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Admin); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { IQueryable <BoardAuthority> iqBAuth = db1.BoardAuthority .Where(m => m.idBoard == nBoardId); armResult.List = (from bauth in iqBAuth join user in db1.UserInfo on bauth.idUser equals user.idUser select new BoardAuthItemModel { idBoardAuthority = bauth.idBoardAuthority, idBoard = bauth.idBoard, idUser = bauth.idUser, Authority = bauth.Authority, AuthState = bauth.AuthState, UserName = user.ViewName, SignEmail = "", Memo = bauth.Memo, EditDate = bauth.EditDate }) .ToList(); }//end using db1 } return(rrResult.ToResult()); }
/// <summary> /// 인증정보가 확인 /// </summary> /// <param name="sEmail"></param> /// <param name="sPassword"></param> /// <returns></returns> public bool ValidateCredentials(string sEmail, string sPassword) { bool bReturn = false; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { User mgrItem = db1.User .FirstOrDefault(x => x.SignEmail == sEmail && x.Password == sPassword); if (mgrItem != null) { bReturn = true; } } return(bReturn); }
[Authorize]//OAuth2 인증 설정 public ActionResult <SignInSimpleResultModel> AccessToUserInfo() { //리턴 보조 ApiResultReady armResult = new ApiResultReady(this); //리턴용 모델 SignInSimpleResultModel tmResult = new SignInSimpleResultModel(); //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //검색된 유저 User findUser = null; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //유저 검색 findUser = db1.User .FirstOrDefault(m => m.idUser == cm.id_int); if (null != findUser) {//유저 정보가 있다. UserInfo fundUI = db1.UserInfo .Where(m => m.idUser == findUser.idUser) .FirstOrDefault(); tmResult.idUser = findUser.idUser; tmResult.Email = findUser.SignEmail; tmResult.ViewName = fundUI.ViewName; tmResult.MgtClass = fundUI.MgtClass; } else {//유저 정보가 없다. armResult.InfoCode = "1"; armResult.Message = "엑세스 토큰이 유효하지 않습니다.[로그인 필요]"; } } return(armResult.ToResult(tmResult)); }
/// <summary> /// 값을 검색한다. - 문자열 /// </summary> /// <param name="sName"></param> /// <returns></returns> public string GetValue(string sName) { string sReturn = string.Empty; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { sReturn = db1.Setting_Data .Where(m => m.Name == sName) .FirstOrDefault() .ValueData; if (true == string.IsNullOrEmpty(sReturn)) {//빈값이면 빈값으로 초기화 sReturn = string.Empty; } } return(sReturn); }
/// <summary> /// DB에서 세팅 정보를 불러 메모리에 저장한다. /// DB에서 세팅을 수정하였다면 이 함수를 호출하여 메모리를 갱신해야한다. /// </summary> public void Setting_Load() { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //대상 로드 this.Setting_Data = db1.Setting_Data .ToList(); //json 파일로 출력*********** //json으로 출력할 데이터리스트만 추린다. List <Setting_Data> listS_D = this.Setting_Data .Where(w => w.OpenType == Setting_DataOpenType.Public) .ToList(); //변환용 모델로 변환 List <ListToJavascriptModel> listLTJ = listS_D .Select(s => new ListToJavascriptModel { Summary = s.Description, Name = s.Name, Value = s.ValueData }) .ToList(); //json문자열로 변환 string sJson = GlobalStatic.JsProc.ToJsonString(listLTJ); //파일 출력 GlobalStatic.FileProc .WWW_FileSave( @"Faculty\Setting_Data.json" , sJson); } }
public ActionResult <ApiResultBaseModel> ViewNameCheck(string sViewName) { //리턴 보조 ApiResultReady armResult = new ApiResultReady(this); //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { UserInfo findUserInfo = db1.UserInfo .Where(m => m.ViewName == sViewName) .FirstOrDefault(); if (null == findUserInfo) {//성공 armResult.InfoCode = "0"; } else { //이미 있음 if (findUserInfo.idUser == cm.id_int) { //내 아이디다. //내가 쓰는 내 닉네임은 중복검사에서 제외이므로 //성공으로 취급한다. armResult.InfoCode = "0"; } else { armResult.InfoCode = "-1"; armResult.Message = "이미 사용중인 닉네임 입니다."; } } } return(armResult.ToResult(null)); }
public ActionResult <SignInResultModel> RefreshToAccess( [FromForm] string sRefreshToken) { //결과용 ApiResultReady rrResult = new ApiResultReady(this); //엑세스 토큰 갱신용 모델 SignInResultModel rmResult = new SignInResultModel(); rrResult.ResultObject = rmResult; //API 호출 시간 DateTime dtNow = DateTime.Now; //리플레시 토큰 갱신 시도 기록 GlobalSign.LogAdd_DB( 1 , ModelDB.UserSignLogType.RefreshToken , 0 , string.Format("RefreshToAccess 시도 : {0}", sRefreshToken)); //토큰 갱신 요청 TokenResponse tr = GlobalStatic.TokenProc.RefreshTokenAsync(sRefreshToken).Result; //기존 로그인한 유저 검색 UserSignIn itemUSI = null; if (true == tr.IsError) {//토큰 갱신 실패 //DB에 있는 리플레시 토큰은 수동으로 확인해서 갱신해준다. //토큰 정보는 메모리에 저장되기 때문에 서버가 내려갔다 올라오면 토큰정보가 날아간다. //이런 예외를 처리하기위해 수동으로 리플레시 토큰을 갱신해야한다. using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //기존 로그인한 유저 검색 itemUSI = db1.UserSignIn .Where(m => m.RefreshToken == sRefreshToken) .FirstOrDefault(); if (null == itemUSI) {//정보 자체가 없다. rrResult.InfoCode = "-101"; rrResult.Message = "갱신실패 : 인증 정보가 없습니다."; } else if (dtNow > itemUSI.RefreshDate) {//인증정보의 유효기간이 지났다. rrResult.InfoCode = "-102"; rrResult.Message = "갱신실패 : 인증가능 기간이 지났습니다."; } else {//토큰이 살아있다. //유저를 검색한다. User findUser = db1.User .Where(w => w.idUser == itemUSI.idUser) .FirstOrDefault(); //토큰을 갱신한다. tr = GlobalStatic.TokenProc .RequestTokenAsync(findUser.SignEmail, findUser.Password) .Result; } } //end using db1 } //end if (true == tr.IsError) if (true == rrResult.IsSuccess()) { if (true == tr.IsError) { rrResult.InfoCode = "1"; rrResult.Message = "토큰 갱신에 실패하였습니다."; } } if (true == rrResult.IsSuccess()) {//에러가 없다. //유저 정보를 받는다. UserInfoResponse inrUser = GlobalStatic.TokenProc.UserInfoAsync(tr.AccessToken).Result; //유저 정보 추출 ClaimModel cm = new ClaimModel(inrUser.Claims); using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //기존 로그인한 유저 검색 itemUSI = db1.UserSignIn .Where(m => m.idUser == cm.id_int) .FirstOrDefault(); if (null == itemUSI) {//기존 로그인 정보가 없다, //이러면 강제로 토큰이 상실된 것일 수 있다. rrResult.InfoCode = "1"; rrResult.Message = "토큰 갱신에 실패하였습니다."; } else { //로그인 되어있는 유저정보 수정 itemUSI.RefreshToken = tr.RefreshToken; itemUSI.RefreshDate = dtNow.AddDays(30); //db 적용 db1.SaveChanges(); //유저에게 전달할 정보 만들기 rmResult.idUser = cm.id_int; rmResult.Email = cm.email; rmResult.ViewName = rmResult.Email; rmResult.access_token = tr.AccessToken; rmResult.refresh_token = tr.RefreshToken; //기록 GlobalSign.LogAdd_DB( 1 , ModelDB.UserSignLogType.RefreshToken , cm.id_int , string.Format("RefreshToAccess 성공 : {0}", rmResult.Email)); } }//end using db1 } return(rrResult.ToResult(rmResult)); }
public ActionResult <ApiResultBaseModel> SignUp( [FromForm] string sEmail , [FromForm] string sViewName , [FromForm] string sPassword) { //리턴 보조 ApiResultReady armResult = new ApiResultReady(this); DateTime dtNow = DateTime.Now; //인증 정보에서 유저 정보 추출 //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { User findUser = db1.User .Where(m => m.SignEmail == sEmail) .FirstOrDefault(); //표시 이름 검색 UserInfo findViewName = db1.UserInfo .Where(m => m.ViewName == sViewName) .FirstOrDefault(); if ("0" == armResult.InfoCode && null != findUser) {//이미 있음 armResult.InfoCode = "-1"; armResult.Message = "이미 사용중인 아이디 입니다."; } if ("0" == armResult.InfoCode && null != findViewName) { armResult.InfoCode = "-3"; armResult.Message = "표시이름을 사용하는 사용자가 있습니다."; } if ("0" == armResult.InfoCode) {//성공 //사인인 정보 추가 User newUser = new User(); newUser.SignEmail = sEmail; newUser.Password = sPassword; db1.User.Add(newUser); db1.SaveChanges(); //사용자 정보 추가 UserInfo newUI = new UserInfo(); newUI.idUser = newUser.idUser; newUI.ViewName = newUser.SignEmail; newUI.ViewName = sViewName; newUI.MgtClass = ManagementClassType.User; newUI.SignUpDate = dtNow; db1.UserInfo.Add(newUI); db1.SaveChanges(); } } return(armResult.ToResult(null)); }
public ActionResult <SignInResultModel> SignIn( [FromForm] string sEmail , [FromForm] string sPW) { //결과용 ApiResultReady rrResult = new ApiResultReady(this); //로그인 처리용 모델 SignInResultModel rmResult = new SignInResultModel(); rrResult.ResultObject = rmResult; //API 호출 시간 DateTime dtNow = DateTime.Now; //검색된 유저 User findUser = null; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //유저 검색 findUser = db1.User .FirstOrDefault(m => m.SignEmail == sEmail && m.Password == sPW); } if (findUser != null) { //토큰 요청 TokenResponse tr = GlobalStatic.TokenProc.RequestTokenAsync(sEmail, sPW).Result; if (true == tr.IsError) {//에러가 있다. rrResult.InfoCode = "1"; rrResult.Message = "아이디나 비밀번호가 틀렸습니다."; } else {//에러가 없다. using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //기존 로그인한 유저 검색 UserSignIn[] arrSL = db1.UserSignIn .Where(m => m.idUser == findUser.idUser) .ToArray(); //기존 로그인한 유저 정보 제거 db1.UserSignIn.RemoveRange(arrSL); //db 적용 db1.SaveChanges(); //사인인 한 유저의 정보 UserInfo findUI = db1.UserInfo .Where(m => m.idUser == findUser.idUser) .FirstOrDefault(); //로그인 되어있는 유저정보 저장 UserSignIn slItem = new UserSignIn(); slItem.idUser = findUser.idUser; slItem.RefreshToken = tr.RefreshToken; slItem.SignInDate = dtNow; slItem.RefreshDate = dtNow; //기존 로그인한 유저 정보 제거 db1.UserSignIn.Add(slItem); //db 적용 db1.SaveChanges(); //로그인한 유저에게 전달할 정보 rmResult.idUser = findUser.idUser; rmResult.Email = findUser.SignEmail; rmResult.ViewName = findUI.ViewName; rmResult.MgtClass = findUI.MgtClass; rmResult.access_token = tr.AccessToken; rmResult.refresh_token = tr.RefreshToken; } } } else { rrResult.InfoCode = "1"; rrResult.Message = "아이디나 비밀번호가 틀렸습니다."; } return(rrResult.ToResult(rmResult)); }
public ActionResult <SignInResultModel> SignIn( [FromForm] string sEmail , [FromForm] string sPW) { //결과용 ApiResultReady rrResult = new ApiResultReady(this); //로그인 처리용 모델 SignInResultModel rmResult = new SignInResultModel(); rrResult.ResultObject = rmResult; //API 호출 시간 DateTime dtNow = DateTime.Now; //사인인 시도 기록 GlobalSign.LogAdd_DB( 1 , ModelDB.UserSignLogType.SignIn , 0 , string.Format("SignIn 시도 - {0}, {1}", sEmail, sPW)); //검색된 유저 User findUser = null; using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //유저 검색 findUser = db1.User .FirstOrDefault(m => m.SignEmail == sEmail && m.Password == sPW); } if (findUser != null) { //토큰 요청 TokenResponse tr = GlobalStatic.TokenProc.RequestTokenAsync(sEmail, sPW).Result; if (true == tr.IsError) {//에러가 있다. rrResult.InfoCode = "1"; rrResult.Message = "아이디나 비밀번호가 틀렸습니다."; } else {//에러가 없다. using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //기존 로그인한 유저 검색 UserSignIn[] arrSL = db1.UserSignIn .Where(m => m.idUser == findUser.idUser) .ToArray(); //기존 로그인 토큰 제거 foreach (UserSignIn itemUSI in arrSL) { //리플레시 토큰 제거 if ((null != itemUSI.RefreshToken) && (string.Empty != itemUSI.RefreshToken)) { TokenRevocationResponse trr = GlobalStatic.TokenProc .RevocationTokenAsync(itemUSI.RefreshToken) .Result; } }//end foreach itemUSI //기존 로그인한 유저 정보 제거 db1.UserSignIn.RemoveRange(arrSL); //db 적용 db1.SaveChanges(); //사인인 한 유저의 정보 UserInfo findUI = db1.UserInfo .Where(m => m.idUser == findUser.idUser) .FirstOrDefault(); //로그인 되어있는 유저정보 저장 UserSignIn slItem = new UserSignIn(); slItem.idUser = findUser.idUser; slItem.RefreshToken = tr.RefreshToken; slItem.SignInDate = dtNow; slItem.RefreshDate = dtNow; //기존 로그인한 유저 정보 제거 db1.UserSignIn.Add(slItem); //db 적용 db1.SaveChanges(); //로그인한 유저에게 전달할 정보 rmResult.idUser = findUser.idUser; rmResult.Email = findUser.SignEmail; rmResult.ViewName = findUI.ViewName; rmResult.MgtClass = findUI.MgtClass; rmResult.access_token = tr.AccessToken; rmResult.refresh_token = tr.RefreshToken; //성공 로그 //사인인 성공 기록 GlobalSign.LogAdd_DB( 1 , ModelDB.UserSignLogType.SignIn , findUser.idUser , string.Format("SignIn 성공 - {0}", sEmail)); }//end using db1 } } else { rrResult.InfoCode = "1"; rrResult.Message = "아이디나 비밀번호가 틀렸습니다."; } return(rrResult.ToResult(rmResult)); }
public ActionResult <SignInResultModel> RefreshToAccess( [FromForm] string sRefreshToken) { //결과용 ApiResultReady rrResult = new ApiResultReady(this); //엑세스 토큰 갱신용 모델 SignInResultModel armResult = new SignInResultModel(); rrResult.ResultObject = armResult; //API 호출 시간 DateTime dtNow = DateTime.Now; //토큰 갱신 요청 TokenResponse tr = GlobalStatic.TokenProc.RefreshTokenAsync(sRefreshToken).Result; if (true == tr.IsError) {//에러가 있다. rrResult.InfoCode = "1"; rrResult.Message = "토큰 갱신에 실패하였습니다."; } else {//에러가 없다. //유저 정보를 받는다. UserInfoResponse inrUser = GlobalStatic.TokenProc.UserInfoAsync(tr.AccessToken).Result; //유저 정보 추출 ClaimModel cm = new ClaimModel(inrUser.Claims); using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //기존 로그인한 유저 검색 UserSignIn itemUSI = db1.UserSignIn .Where(m => m.idUser == cm.id_int) .FirstOrDefault(); if (null == itemUSI) {//기존 로그인 정보가 없다, //이러면 강제로 토큰이 상실된 것일 수 있다. rrResult.InfoCode = "1"; rrResult.Message = "토큰 갱신에 실패하였습니다."; } else { //로그인 되어있는 유저정보 수정 itemUSI.RefreshToken = tr.RefreshToken; itemUSI.RefreshDate = dtNow; //db 적용 db1.SaveChanges(); //사인인 한 유저의 정보 UserInfo findUI = db1.UserInfo .Where(m => m.idUser == cm.id_int) .FirstOrDefault(); //유저에게 전달할 정보 만들기 armResult.idUser = cm.id_int; armResult.Email = cm.email; armResult.ViewName = findUI.ViewName; armResult.MgtClass = findUI.MgtClass; armResult.access_token = tr.AccessToken; armResult.refresh_token = tr.RefreshToken; } } } return(rrResult.ToResult(armResult)); }
/// <summary> /// 파일을 저장하고 DB에 정보를 저장한다. /// </summary> /// <param name="sDir"></param> /// <param name="listFileInfo"></param> /// <param name="fiThumbnail"></param> /// <param name="byteThumbnail"></param> /// <returns></returns> public FileData[] FileInDb(string sDir , FileInfoModel[] listFileInfo , out FileInfoModel fiThumbnail , out byte[] byteThumbnail) { List <FileData> listReturnFile = new List <FileData>(); fiThumbnail = null; byteThumbnail = null; DateTime dtNow = DateTime.Now; //파일 저장 위치 string sFilePathShort = string.Format(@"\wwwroot\Upload\{0:D4}\{1:D2}\{2:D2}\" , dtNow.Year , dtNow.Month , dtNow.Day); //파일 외부 주소 string sFileUrl = string.Format(@"/Upload/{0:D4}/{1:D2}/{2:D2}/" , dtNow.Year , dtNow.Month , dtNow.Day); using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //파일 처리****** //파일 리스트 문자열 StringBuilder sbFileList = new StringBuilder(); foreach (FileInfoModel itemFI in listFileInfo) { if ((0 >= itemFI.idFile) && (false == itemFI.Delete) && (false == itemFI.Edit)) {//추가다 //파일 추가******************* FileData newFL = new FileData(); newFL.FileName = itemFI.Name; newFL.Ext = itemFI.Extension; newFL.Description = itemFI.Description; newFL.EditorDivision = itemFI.EditorDivision; //새로 파일 처리를 한다. newFL.FileState = FileStateType.NewFile; //기초정보 생성 db1.FileData.Add(newFL); db1.SaveChanges(); //생성된 인덱스 추가 sbFileList.Append("," + newFL.idFileList); //저장위치 + 파일인덱스 + 확장자 string sFilePathShortFileName = sFilePathShort + newFL.idFileList + itemFI.Extension; //url + 파일인덱스 + 확장자 string sFilePath = sDir + sFilePathShortFileName; //파일 url string sFileUrlName = sFileUrl + string.Format(@"{0}{1}" , newFL.idFileList , itemFI.Extension); //디랙토리 생성 System.IO.Directory.CreateDirectory(sDir + sFilePathShort); //파일 생성 using (FileStream stream = System.IO.File.Create(sFilePath)) { //베이스64 데이터를 바이트 어레이로 변환 string[] sCutBase64 = itemFI.Binary.Split(","); byte[] byteFile; if (2 <= sCutBase64.Length) { byteFile = Convert.FromBase64String(sCutBase64[1]); } else { byteFile = Convert.FromBase64String(sCutBase64[0]); } //파일 시스템에 저장 stream.Write(byteFile); //썸네일 임시저장 if (true == itemFI.Thumbnail) { fiThumbnail = itemFI; byteThumbnail = byteFile; } //파일용량 저장 newFL.Size = byteFile.Length; }//end using stream newFL.FileDir = sFilePathShortFileName; newFL.FileUrl = sFileUrlName; //완성된 파일 정보 백업 listReturnFile.Add(newFL); } else if (true == itemFI.Edit) {//수정이다.********************************** //수정은 파일정보만 수정된다. if (0 >= itemFI.idFile) {//파일 정보가 없다. //수정가 불가능하다. } else { //파일정보를 찾는다. FileData findFl = db1.FileData .Where(m => m.idFileList == itemFI.idFile) .FirstOrDefault(); // findFl.Description = itemFI.Description; //타입으로 복구 findFl.FileState = FileStateType.Normal; //완성된 파일 정보 백업 listReturnFile.Add(findFl); } } else if (true == itemFI.Delete) { //삭제다.********************************** if (0 >= itemFI.idFile) { //파일 정보가 없다. //삭제가 불가능하다. } else { //파일정보를 찾는다. FileData findFl = db1.FileData .Where(m => m.idFileList == itemFI.idFile) .FirstOrDefault(); //삭제 타입으로 변경 findFl.FileState = FileStateType.DeleteReservation; //완성된 파일 정보 백업 listReturnFile.Add(findFl); } } }//end foreach (FileInfoModel itemFI in listFileInfo) //DB에 적용 db1.SaveChanges(); }//end using db1 return(listReturnFile.ToArray()); }//end FileInDb
public ActionResult <ApiResultBaseModel> AuthAdd( [FromForm] long nBoardId , [FromForm] long nUserId) { ApiResultReady rrResult = new ApiResultReady(this); DateTime dtNow = DateTime.Now; //유저 정보 추출 ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims); //이 유저가 해당 관리 등급이 있는지 확인한다. ManagementClassCheckType typePC = GlobalStatic.MgtA.MgtClassCheck(cm.id_int , ManagementClassType.Admin); if (typePC == ManagementClassCheckType.Ok) { using (SpaNetCoreFoundationContext db1 = new SpaNetCoreFoundationContext()) { //게시판 찾기 Board findBoard = db1.Board .Where(m => m.idBoard == nBoardId) .FirstOrDefault(); //유저 찾기 User findUser = db1.User .Where(m => m.idUser == nUserId) .FirstOrDefault(); //이미 권한을 가지고 있는지 확인 BoardAuthority findBA = db1.BoardAuthority .Where(m => m.idBoard == nBoardId && m.idUser == nUserId) .FirstOrDefault(); //게시판 있는지 확인 if ("0" == rrResult.InfoCode) { if (null == findBoard) { //게시판을 찾지 못했다. rrResult.InfoCode = "-1"; rrResult.Message = "게시판을 찾을 수 없습니다."; } } if ("0" == rrResult.InfoCode) { if (null == findUser) { //유저를 찾지 못했다. rrResult.InfoCode = "-2"; rrResult.Message = "유저를 찾을 수 없습다."; } } if ("0" == rrResult.InfoCode) { if (null != findBA) { //이미 권한을 가지고 있다. rrResult.InfoCode = "-3"; rrResult.Message = "이미 권한을 가지고 있습니다."; } } if ("0" == rrResult.InfoCode) { //유저 정보 UserInfo findUI = db1.UserInfo .Where(m => m.idUser == nUserId) .FirstOrDefault(); //추가할 권한 정보 BoardAuthority newBA = new BoardAuthority(); newBA.idBoard = findBoard.idBoard; newBA.idUser = findUI.idUser; //게시판의 기본권을 먼저 준다. newBA.Authority = findBoard.AuthorityDefault; newBA.AuthState = BoardAuthorityStateType.Use; newBA.Memo = string.Empty; newBA.EditDate = dtNow; db1.BoardAuthority.Add(newBA); db1.SaveChanges(); } } //end using db1 } //end typePC return(rrResult.ToResult()); }