Skip to content

Commit 1eac8fa

Browse files
authored
Merge pull request #193 from yellowRibbonToCode/privacy
Privacy Usage Term Add
2 parents 313ac37 + 5bbf136 commit 1eac8fa

File tree

4 files changed

+273
-2
lines changed

4 files changed

+273
-2
lines changed

PrivateLibrary.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
EE3FB11F2743834C003C761F /* S-CoreDream-9Black.otf in Resources */ = {isa = PBXBuildFile; fileRef = EE3FB1162743834B003C761F /* S-CoreDream-9Black.otf */; };
7575
EE3FB1202743834C003C761F /* S-CoreDream-6Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = EE3FB1172743834C003C761F /* S-CoreDream-6Bold.otf */; };
7676
EE5DBA70273AA7AA002FA450 /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE5DBA6F273AA7AA002FA450 /* SearchView.swift */; };
77+
EE72D95627535EF200B3BD3B /* Privacy.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE72D95527535EF200B3BD3B /* Privacy.swift */; };
7778
EE9B91D4272D2E7B005BCFA5 /* ForgotView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9B91D3272D2E7A005BCFA5 /* ForgotView.swift */; };
7879
EEAD456B273FC50F00632C92 /* DetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAD456A273FC50F00632C92 /* DetailView.swift */; };
7980
EEAD456D27400A3100632C92 /* BookView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAD456C27400A3100632C92 /* BookView.swift */; };
@@ -133,6 +134,7 @@
133134
EE3FB1162743834B003C761F /* S-CoreDream-9Black.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "S-CoreDream-9Black.otf"; sourceTree = "<group>"; };
134135
EE3FB1172743834C003C761F /* S-CoreDream-6Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "S-CoreDream-6Bold.otf"; sourceTree = "<group>"; };
135136
EE5DBA6F273AA7AA002FA450 /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = "<group>"; };
137+
EE72D95527535EF200B3BD3B /* Privacy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Privacy.swift; sourceTree = "<group>"; };
136138
EE9B91D3272D2E7A005BCFA5 /* ForgotView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForgotView.swift; sourceTree = "<group>"; };
137139
EEAD456A273FC50F00632C92 /* DetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailView.swift; sourceTree = "<group>"; };
138140
EEAD456C27400A3100632C92 /* BookView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookView.swift; sourceTree = "<group>"; };
@@ -281,6 +283,7 @@
281283
C1A83F43274B7EB2000BD479 /* BookMarkButton.swift */,
282284
C1A83F45274B8943000BD479 /* ImageRow.swift */,
283285
C1A83F49274BB494000BD479 /* EditBookInfoView.swift */,
286+
EE72D95527535EF200B3BD3B /* Privacy.swift */,
284287
);
285288
path = Views;
286289
sourceTree = "<group>";
@@ -397,6 +400,7 @@
397400
8AE86A442733A66D00BE14DD /* ProfileScene.swift in Sources */,
398401
73C9051927462F4F00EAEBD7 /* FirstTabView.swift in Sources */,
399402
735B8DDE2733B7C300C9D079 /* AddBookInfoButton.swift in Sources */,
403+
EE72D95627535EF200B3BD3B /* Privacy.swift in Sources */,
400404
8A2F403F2743435200D7B5D5 /* MakeChat.swift in Sources */,
401405
8A2F40452743A86C00D7B5D5 /* ChatRow.swift in Sources */,
402406
C1A83F46274B8943000BD479 /* ImageRow.swift in Sources */,

Views/LoginView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ struct LoginView: View {
132132
.font(.footnote)
133133
.foregroundColor(.red)
134134
.multilineTextAlignment(.center)
135+
.padding()
135136
}
136137
.padding(.bottom,140)
137138
}

Views/Privacy.swift

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
//
2+
// Privacy.swift
3+
// 동네북
4+
//
5+
// Created by SSB on 2021/11/28.
6+
//
7+
8+
import SwiftUI
9+
10+
struct Privacy: View {
11+
@Binding var privacyAgree: Bool
12+
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
13+
14+
private let privacyText = """
15+
< YellowRibbonToCode >('https://github.com/yellowRibbonToCode/PrivateLibrary' 이하 '동네북')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다.
16+
17+
○ 이 개인정보처리방침은 2021년 11월 19부터 적용됩니다.
18+
19+
제1조(개인정보의 처리 목적)
20+
21+
< YellowRibbonToCode >('https://github.com/yellowRibbonToCode/PrivateLibrary' 이하 '동네북')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다.
22+
23+
홈페이지 회원가입 및 관리
24+
회원 가입의사 확인, 회원제 서비스 제공에 따른 본인 식별·인증, 회원자격 유지·관리 목적으로 개인정보를 처리합니다.
25+
26+
재화 또는 서비스 제공
27+
콘텐츠 제공을 목적으로 개인정보를 처리합니다.
28+
29+
제2조(개인정보의 처리 및 보유 기간)
30+
31+
① < YellowRibbonToCode >은(는) 법령에 따른 개인정보 보유·이용기간 또는 정보주체로부터 개인정보를 수집 시에 동의받은 개인정보 보유·이용기간 내에서 개인정보를 처리·보유합니다.
32+
33+
② 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다.
34+
35+
1.<홈페이지 회원가입 및 관리> <홈페이지 회원가입 및 관리>와 관련한 개인정보는 수집.이용에 관한 동의일로부터<서비스 이용계약 또는 회원가입 해지시까지>까지 위 이용목적을 위하여 보유.이용됩니다. 보유근거 : 이용약관 관련법령 : 계약 또는 청약철회 등에 관한 기록 : 5년 예외사유 : 2.<재화 또는 서비스 제공> <재화 또는 서비스 제공>와 관련한 개인정보는 수집.이용에 관한 동의일로부터<서비스 이용계약 또는 회원가입 해지시까지>까지 위 이용목적을 위하여 보유.이용됩니다. 보유근거 : 이용약관 관련법령 : 계약 또는 청약철회 등에 관한 기록 : 5년 예외사유 :
36+
37+
제3조(정보주체와 법정대리인의 권리·의무 및 그 행사방법)
38+
39+
① 정보주체는 YellowRibbonToCode에 대해 언제든지 개인정보 열람·정정·삭제·처리정지 요구 등의 권리를 행사할 수 있습니다.
40+
41+
② 제1항에 따른 권리 행사는YellowRibbonToCode에 대해 「개인정보 보호법」 시행령 제41조제1항에 따라 서면, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 YellowRibbonToCode은(는) 이에 대해 지체 없이 조치하겠습니다.
42+
43+
③ 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다.이 경우 “개인정보 처리 방법에 관한 고시(제2020-7호)” 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다.
44+
45+
④ 개인정보 열람 및 처리정지 요구는 「개인정보 보호법」 제35조 제4항, 제37조 제2항에 의하여 정보주체의 권리가 제한 될 수 있습니다.
46+
47+
⑤ 개인정보의 정정 및 삭제 요구는 다른 법령에서 그 개인정보가 수집 대상으로 명시되어 있는 경우에는 그 삭제를 요구할 수 없습니다.
48+
49+
⑥ YellowRibbonToCode은(는) 정보주체 권리에 따른 열람의 요구, 정정·삭제의 요구, 처리정지의 요구 시 열람 등 요구를 한 자가 본인이거나 정당한 대리인인지를 확인합니다.
50+
51+
제4조(처리하는 개인정보의 항목 작성)
52+
53+
① < YellowRibbonToCode >은(는) 다음의 개인정보 항목을 처리하고 있습니다.
54+
55+
1< 홈페이지 회원가입 및 관리 > 필수항목 : 이메일, 비밀번호, 로그인ID, 이름 선택항목 :
56+
57+
제5조(개인정보의 파기)
58+
59+
① < YellowRibbonToCode > 은(는) 개인정보 보유기간의 경과, 처리목적 달성 등 개인정보가 불필요하게 되었을 때에는 지체없이 해당 개인정보를 파기합니다.
60+
61+
② 정보주체로부터 동의받은 개인정보 보유기간이 경과하거나 처리목적이 달성되었음에도 불구하고 다른 법령에 따라 개인정보를 계속 보존하여야 하는 경우에는, 해당 개인정보를 별도의 데이터베이스(DB)로 옮기거나 보관장소를 달리하여 보존합니다.
62+
63+
법령 근거 :
64+
보존하는 개인정보 항목 : 계좌정보, 거래날짜
65+
③ 개인정보 파기의 절차 및 방법은 다음과 같습니다.
66+
67+
파기절차 < YellowRibbonToCode > 은(는) 파기 사유가 발생한 개인정보를 선정하고, < YellowRibbonToCode > 의 개인정보 보호책임자의 승인을 받아 개인정보를 파기합니다.
68+
69+
파기방법
70+
71+
전자적 파일 형태의 정보는 기록을 재생할 수 없는 기술적 방법을 사용합니다
72+
73+
제6조(개인정보의 안전성 확보 조치)
74+
75+
< YellowRibbonToCode >은(는) 개인정보의 안전성 확보를 위해 다음과 같은 조치를 취하고 있습니다.
76+
77+
정기적인 자체 감사 실시 개인정보 취급 관련 안정성 확보를 위해 정기적(분기 1회)으로 자체 감사를 실시하고 있습니다.
78+
79+
개인정보 취급 직원의 최소화 및 교육 개인정보를 취급하는 직원을 지정하고 담당자에 한정시켜 최소화 하여 개인정보를 관리하는 대책을 시행하고 있습니다.
80+
81+
내부관리계획의 수립 및 시행 개인정보의 안전한 처리를 위하여 내부관리계획을 수립하고 시행하고 있습니다.
82+
83+
해킹 등에 대비한 기술적 대책 ('동네북')은 해킹이나 컴퓨터 바이러스 등에 의한 개인정보 유출 및 훼손을 막기 위하여 보안프로그램을 설치하고 주기적인 갱신·점검을 하며 외부로부터 접근이 통제된 구역에 시스템을 설치하고 기술적/물리적으로 감시 및 차단하고 있습니다.
84+
85+
개인정보의 암호화 이용자의 개인정보는 비밀번호는 암호화 되어 저장 및 관리되고 있어, 본인만이 알 수 있으며 중요한 데이터는 파일 및 전송 데이터를 암호화 하거나 파일 잠금 기능을 사용하는 등의 별도 보안기능을 사용하고 있습니다.
86+
87+
접속기록의 보관 및 위변조 방지 개인정보처리시스템에 접속한 기록을 최소 1년 이상 보관, 관리하고 있으며,다만, 5만명 이상의 정보주체에 관하여 개인정보를 추가하거나, 고유식별정보 또는 민감정보를 처리하는 경우에는 2년이상 보관, 관리하고 있습니다. 또한, 접속기록이 위변조 및 도난, 분실되지 않도록 보안기능을 사용하고 있습니다.
88+
89+
개인정보에 대한 접근 제한 개인정보를 처리하는 데이터베이스시스템에 대한 접근권한의 부여,변경,말소를 통하여 개인정보에 대한 접근통제를 위하여 필요한 조치를 하고 있으며 침입차단시스템을 이용하여 외부로부터의 무단 접근을 통제하고 있습니다.
90+
91+
제7조(개인정보 자동 수집 장치의 설치•운영 및 거부에 관한 사항)
92+
93+
① YellowRibbonToCode 은(는) 이용자에게 개별적인 맞춤서비스를 제공하기 위해 이용정보를 저장하고 수시로 불러오는 ‘쿠키(cookie)’를 사용합니다. ② 쿠키는 웹사이트를 운영하는데 이용되는 서버(http)가 이용자의 컴퓨터 브라우저에게 보내는 소량의 정보이며 이용자들의 PC 컴퓨터내의 하드디스크에 저장되기도 합니다. 가. 쿠키의 사용 목적 : 이용자가 방문한 각 서비스와 웹 사이트들에 대한 방문 및 이용형태, 인기 검색어, 보안접속 여부, 등을 파악하여 이용자에게 최적화된 정보 제공을 위해 사용됩니다. 나. 쿠키의 설치•운영 및 거부 : 웹브라우저 상단의 도구>인터넷 옵션>개인정보 메뉴의 옵션 설정을 통해 쿠키 저장을 거부 할 수 있습니다. 다. 쿠키 저장을 거부할 경우 맞춤형 서비스 이용에 어려움이 발생할 수 있습니다.
94+
95+
제8조 (개인정보 보호책임자)
96+
97+
① YellowRibbonToCode 은(는) 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다.
98+
99+
▶ 개인정보 보호책임자 성명 :신성범 직책 :직원 직급 :직원 연락처 :01031130498, [email protected], ※ 개인정보 보호 담당부서로 연결됩니다.
100+
101+
▶ 개인정보 보호 담당부서 부서명 : 담당자 : 연락처 :, , ② 정보주체께서는 YellowRibbonToCode 의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의하실 수 있습니다. YellowRibbonToCode 은(는) 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.
102+
103+
제9조(개인정보 열람청구) 정보주체는 「개인정보 보호법」 제35조에 따른 개인정보의 열람 청구를 아래의 부서에 할 수 있습니다. < YellowRibbonToCode >은(는) 정보주체의 개인정보 열람청구가 신속하게 처리되도록 노력하겠습니다.
104+
105+
▶ 개인정보 열람청구 접수·처리 부서 부서명 : 담당자 : 연락처 : , ,
106+
107+
제10조(권익침해 구제방법)
108+
109+
정보주체는 개인정보침해로 인한 구제를 받기 위하여 개인정보분쟁조정위원회, 한국인터넷진흥원 개인정보침해신고센터 등에 분쟁해결이나 상담 등을 신청할 수 있습니다. 이 밖에 기타 개인정보침해의 신고, 상담에 대하여는 아래의 기관에 문의하시기 바랍니다.
110+
111+
개인정보분쟁조정위원회 : (국번없이) 1833-6972 (www.kopico.go.kr)
112+
개인정보침해신고센터 : (국번없이) 118 (privacy.kisa.or.kr)
113+
대검찰청 : (국번없이) 1301 (www.spo.go.kr)
114+
경찰청 : (국번없이) 182 (ecrm.cyber.go.kr)
115+
「개인정보보호법」제35조(개인정보의 열람), 제36조(개인정보의 정정·삭제), 제37조(개인정보의 처리정지 등)의 규정에 의한 요구에 대 하여 공공기관의 장이 행한 처분 또는 부작위로 인하여 권리 또는 이익의 침해를 받은 자는 행정심판법이 정하는 바에 따라 행정심판을 청구할 수 있습니다.
116+
117+
※ 행정심판에 대해 자세한 사항은 중앙행정심판위원회(www.simpan.go.kr) 홈페이지를 참고하시기 바랍니다.
118+
119+
제11조(개인정보 처리방침 변경)
120+
121+
① 이 개인정보처리방침은 2021년 11월 19부터 적용됩니다.
122+
"""
123+
private let termText = """
124+
동네북 이용약관
125+
126+
제 1조
127+
128+
동네북(이하 '해당 앱')의 사용자는 다음 사항을 동의합니다.
129+
1. 불쾌하거나 기분 나쁜 컨텐츠( 노출, 외설물, 비속어와 같은 부적절한 콘텐츠 등)를 접할 수도 있다.
130+
2. 사용자는 언제든지 불쾌한 컨텐츠를 신고할 수 있다.
131+
3. 사용자들로부터 5회 이상 불쾌하다고 신고받은 컨텐츠는 그 즉시 삭제한다.
132+
4. 사용자들로부터 5회 이상 불쾌하다고 신고받은 컨텐츠를 올린 사람에 대해 더 이상 글을 쓸 수 없도록 조치하는 것을 24시간 이내에 수행한다.
133+
5. 사용자가 올린 이미지 및 텍스트 등의 정보는 앱 이외의 사항에 사용하지 않는다.
134+
135+
제 2조
136+
137+
「개인정보보호법」제35조(개인정보의 열람), 제36조(개인정보의 정정·삭제), 제37조(개인정보의 처리정지 등)의 규정에 의한 요구에 대 하여 공공기관의 장이 행한 처분 또는 부작위로 인하여 권리 또는 이익의 침해를 받은 자는 행정심판법이 정하는 바에 따라 행정심판을 청구할 수 있습니다.
138+
139+
1. 개인정보분쟁조정위원회 : (국번없이) 1833-6972 (www.kopico.go.kr)
140+
141+
2. 개인정보침해신고센터 : (국번없이) 118 (privacy.kisa.or.kr)
142+
143+
3. 대검찰청 : (국번없이) 1301 (www.spo.go.kr)
144+
145+
4. 경찰청 : (국번없이) 182 (ecrm.cyber.go.kr)
146+
147+
"""
148+
149+
var body: some View {
150+
VStack(alignment: .leading){
151+
Text("개인정보 처리방침")
152+
.padding()
153+
.foregroundColor(.mainBlue)
154+
.font(Font.custom("S-CoreDream-6Bold", size: 20))
155+
privacyInfo()
156+
Text("이용 약관")
157+
.padding()
158+
.foregroundColor(.mainBlue)
159+
.font(Font.custom("S-CoreDream-6Bold", size: 20))
160+
termsOfUse()
161+
Button(action: {
162+
self.privacyAgree = true
163+
self.presentationMode.wrappedValue.dismiss()
164+
}) {
165+
HStack{
166+
Spacer()
167+
RoundedRectangle(cornerRadius: 20)
168+
.fill(Color.mainBlue)
169+
.frame(width: 200, height: 50)
170+
.overlay(
171+
Text("동의합니다.")
172+
.foregroundColor(.white)
173+
.background(Color.mainBlue)
174+
.font(Font.custom("S-CoreDream-6Bold", size: 20))
175+
176+
.padding()
177+
)
178+
Spacer()
179+
}
180+
}
181+
.padding()
182+
Spacer()
183+
184+
.navigationTitle("")
185+
.navigationBarTitleDisplayMode(.inline)
186+
.navigationBarBackButtonHidden(true)
187+
.navigationBarItems(leading: Button(action: {
188+
self.presentationMode.wrappedValue.dismiss()
189+
}){
190+
Image(systemName: "arrow.left")
191+
.foregroundColor(.mainBlue)
192+
})
193+
194+
}
195+
.font(Font.custom("S-CoreDream-5Medium", size: 15))
196+
}
197+
198+
fileprivate func privacyInfo() -> some View {
199+
return(
200+
ScrollView{
201+
VStack{
202+
Text(privacyText)
203+
.padding()
204+
}
205+
}
206+
.border(Color.mainBlue)
207+
.padding(.horizontal)
208+
)
209+
}
210+
211+
fileprivate func termsOfUse() -> some View {
212+
return(
213+
ScrollView{
214+
VStack{
215+
Text(termText)
216+
217+
.padding()
218+
}
219+
}
220+
.border(Color.mainBlue)
221+
.padding(.horizontal)
222+
)
223+
}
224+
225+
226+
}
227+
228+
//struct Privacy_Previews: PreviewProvider {
229+
// @State var privacyAgree: Bool = false
230+
// static var previews: some View {
231+
// Privacy(privacyAgree: $privacyAgree)
232+
// }
233+
//}
234+
235+
// .lineSpacing(50)
236+

0 commit comments

Comments
 (0)