public ActionResult <ApiResultObjectModel> SettingLoad()
        {
            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)
            {
                //세팅 로드
                GlobalStatic.Setting_DataProc.Setting_Load();
            }
            else
            {
                //에러
                rrResult.InfoCode = ApiResultType.PermissionCheckError.ToString();
            }

            return(rrResult.ToResult());
        }
        [Authorize]//OAuth2 인증 설정
        public ActionResult <TestModel02> Test02(int nData)
        {
            //리턴 보조
            ApiResultReady rrResult = new ApiResultReady(this);
            //리턴용 모델
            TestModel02 armResult = new TestModel02();

            rrResult.ResultObject = armResult;

            //유저 정보 추출
            ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims);

            if (0 <= nData)
            {//양수다.
                armResult.nTest001 = nData;
                armResult.sTest002 = "성공 했습니다! : " + cm.id;
            }
            else
            {
                rrResult.InfoCode = "1";
                rrResult.Message  = "'nData'에 음수가 입력되었습니다.";
            }

            return(rrResult.ToResult(armResult));
        }
        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));
        }
        [Authorize]//OAuth2 인증 설정
        public ActionResult <SignInSimpleResultModel> AccessToUserInfo()
        {
            //리턴 보조
            ApiResultReady armResult = new ApiResultReady(this);
            //리턴용 모델
            SignInSimpleResultModel tmResult = new SignInSimpleResultModel();

            //유저 정보 추출
            ClaimModel cm = new ClaimModel(((ClaimsIdentity)User.Identity).Claims);

            //검색된 유저
            UserSignInfoModel user
                = GlobalStatic.UserList.List
                  .FirstOrDefault(m =>
                                  m.ID == cm.id_int);

            if (null != user)
            {//유저 정보가 있다.
                tmResult.id    = user.ID;
                tmResult.email = user.Email;
            }
            else
            {//유저 정보가 없다.
                armResult.InfoCode = "1";
                armResult.Message  = "엑세스 토큰이 유효하지 않습니다.[로그인 필요]";
            }

            return(armResult.ToResult(tmResult));
        }
Ejemplo n.º 5
0
        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));
        }
        public ActionResult <SignInResultModel> SignIn(
            [FromForm] string sEmail
            , [FromForm] string sPW)
        {
            //결과용
            ApiResultReady rrResult = new ApiResultReady(this);
            //로그인 처리용 모델
            SignInResultModel armResult = new SignInResultModel();

            rrResult.ResultObject = armResult;

            //유저 검색
            UserSignInfoModel user
                = GlobalStatic.UserList
                  .List.FirstOrDefault(m =>
                                       m.Email == sEmail &&
                                       m.Password == sPW);


            if (user != null)
            {
                //에러가 없다.
                rrResult.Message = user.Email;

                armResult.access_token  = "dasdflcc090fkkc";
                armResult.refresh_token = "das54340fl8fd";
            }
            else
            {
                rrResult.InfoCode = "1";
                rrResult.Message  = "아이디나 비밀번호가 틀렸습니다.";
            }

            return(rrResult.ToResult());
        }
Ejemplo n.º 7
0
        public ActionResult <SignInModel> SignIn(
            [FromForm] string sEmail
            , [FromForm] string sPW)
        {
            ApiResultReady armResult = new ApiResultReady(this);

            //로그인 처리용 모델
            SignInModel smResult = new SignInModel();

            armResult.ResultObject = smResult;

            if (sEmail == "*****@*****.**" && sPW == "1111")
            {
                smResult.Complete = true;

                //이 프로젝트에서는 사인인한 유저의 정보를 어디에도 저장하지 않는다.
                //그래서 토큰으로 유저를 구분할 수 있게 만든다.
                smResult.Token
                    = string.Format("{0}▩{1}"
                                    , sEmail
                                    , Guid.NewGuid().ToString());
            }
            else
            {
                armResult.InfoCode = "-1";
                armResult.Message  = "일치하는 정보가 없습니다.";

                smResult.Complete = false;
            }

            return(armResult.ToResult());
        }
Ejemplo n.º 8
0
        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());
        }
Ejemplo n.º 9
0
        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());
        }
        public ActionResult <string> SignOut(
            [FromForm] string sRefreshToken)
        {
            ApiResultReady rrResult = new ApiResultReady(this);

            //사인아웃에 필요한 작업을 한다.

            //임시로 아이디를 넘긴다.
            return(rrResult.ToResult());
        }
Ejemplo n.º 11
0
        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 <ApiResultBaseModel> Call()
        {
            //리턴 보조
            ApiResultReady armResult = new ApiResultReady(this);
            //리턴용 모델
            ApiResultBaseModel tmResult = new ApiResultBaseModel();

            armResult.Message = "성공";

            return(armResult.ToResult(tmResult));
        }
        public ActionResult <SignInResultModel> SignIn(
            [FromForm] string sEmail
            , [FromForm] string sPW)
        {
            //결과용
            ApiResultReady rrResult = new ApiResultReady(this);
            //로그인 처리용 모델
            SignInResultModel armResult = new SignInResultModel();

            rrResult.ResultObject = armResult;

            //유저 검색
            UserSignInfoModel user
                = GlobalStatic.UserList
                  .List.FirstOrDefault(m =>
                                       m.Email == sEmail &&
                                       m.Password == sPW);


            if (user != null)
            {
                //토큰 요청
                TokenResponse tr = null;
                //토큰 요청
                tr = GlobalStatic.TokenProc.RequestTokenAsync(sEmail, sPW).Result;

                if (true == tr.IsError)
                {//에러가 있다.
                    rrResult.InfoCode = "1";
                    rrResult.Message  = "아이디나 비밀번호가 틀렸습니다.";
                }
                else
                {//에러가 없다.
                    //로그인 되어있는 유저정보 저장
                    GlobalStatic.SignInList.Add(user.ID, tr.RefreshToken);

                    armResult.id    = user.ID;
                    armResult.email = user.Email;

                    armResult.lv = 0;

                    armResult.access_token  = tr.AccessToken;
                    armResult.refresh_token = tr.RefreshToken;
                }
            }
            else
            {
                rrResult.InfoCode = "1";
                rrResult.Message  = "아이디나 비밀번호가 틀렸습니다.";
            }

            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));
        }
        public ActionResult <string> SignOut(
            [FromForm] string sToken)
        {
            ApiResultReady rrResult = new ApiResultReady(this);

            //토큰의 앞이 유저 정보다.
            string[] sCutToken = sToken.Split("▩");
            //정보를 넣어 준다.
            rrResult.Message = sCutToken[0];

            //임시로 아이디를 넘긴다.
            return(rrResult.ToResult());
        }
Ejemplo n.º 16
0
        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());
        }
Ejemplo n.º 17
0
        [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());
        }
Ejemplo n.º 18
0
        public ActionResult <string> SignOut(
            [FromForm] string sToken)
        {
            ApiResultReady armResult = new ApiResultReady(this);

            ApiResultBaseModel arbm = new ApiResultBaseModel();

            //토큰의 앞이 유저 정보다.
            string[] sCutToken = sToken.Split("▩");
            //정보를 넣어 준다.
            armResult.Message = sCutToken[0];

            //임시로 아이디를 넘긴다.
            return(armResult.ToResult(arbm));
        }
Ejemplo n.º 19
0
        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());
        }
Ejemplo n.º 20
0
        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());
        }
Ejemplo n.º 21
0
        [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));
        }
        public ActionResult <SignInResultModel> RefreshToAccess(
            [FromForm] string sRefreshToken)
        {
            //결과용
            ApiResultReady rrResult = new ApiResultReady(this);
            //엑세스 토큰 갱신용 모델
            SignInResultModel armResult = new SignInResultModel();

            rrResult.ResultObject = armResult;

            //토큰 갱신 요청
            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);

                //로그인 되어있는 유저정보 저장
                GlobalStatic.SignInList.Add(cm.id_int, tr.RefreshToken);


                //모델에 입력
                armResult.id    = cm.id_int;
                armResult.email = cm.email;

                armResult.access_token  = tr.AccessToken;
                armResult.refresh_token = tr.RefreshToken;
            }

            return(rrResult.ToResult(armResult));
        }
        [Authorize]//OAuth2 인증 설정
        public ActionResult <string> SignOut(
            [FromForm] int nID
            , [FromForm] string sRefreshToken)
        {
            ApiResultReady rrResult = new ApiResultReady(this);

            //사인아웃에 필요한 작업을 한다.
            //사용자
            GlobalStatic.SignInList.Delete(nID, sRefreshToken);

            //리플레시 토큰 제거
            if ((null != sRefreshToken) &&
                (string.Empty != sRefreshToken))
            {
                TokenRevocationResponse trr = GlobalStatic.TokenProc.RevocationTokenAsync(sRefreshToken).Result;
            }

            //로컬 인증 쿠키 삭제 요청
            HttpContext.SignOutAsync();

            //임시로 아이디를 넘긴다.
            return(rrResult.ToResult());
        }
Ejemplo n.º 24
0
        public ActionResult <TestModel01> Test01(int nData, string sData)
        {
            //리턴 보조
            ApiResultReady rrResult = new ApiResultReady(this);
            //리턴용 모델
            TestModel01 armResult = new TestModel01();

            rrResult.ResultObject = armResult;

            if (0 <= nData)
            {//양수다.
                armResult.nTest = nData;
                armResult.sTest = sData;
            }

            if (false == rrResult.IsSuccess())
            {
                rrResult.InfoCode = "1";
                rrResult.Message  = "'nData'에 음수가 입력되었습니다.";
            }

            return(rrResult.ToResult(armResult));
        }
Ejemplo n.º 25
0
        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));
        }
Ejemplo n.º 26
0
        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));
        }
Ejemplo n.º 27
0
        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));
        }
Ejemplo n.º 28
0
        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));
        }
Ejemplo n.º 29
0
        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());
        }
Ejemplo n.º 30
0
        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));
        }