File tree Expand file tree Collapse file tree 1 file changed +30
-5
lines changed
Coder Desktop/Coder Desktop/Views Expand file tree Collapse file tree 1 file changed +30
-5
lines changed Original file line number Diff line number Diff line change @@ -63,8 +63,11 @@ struct LoginForm<S: Session>: View {
6363 guard sessionToken != " " else {
6464 return
6565 }
66- guard let url = URL ( string: baseAccessURL) , url. scheme == " https " else {
67- loginError = . invalidURL
66+ let url : URL
67+ do {
68+ url = try validateURL ( baseAccessURL)
69+ } catch {
70+ loginError = error
6871 return
6972 }
7073 loading = true
@@ -152,8 +155,10 @@ struct LoginForm<S: Session>: View {
152155 guard baseAccessURL != " " else {
153156 return
154157 }
155- guard let url = URL ( string: baseAccessURL) , url. scheme == " https " else {
156- loginError = . invalidURL
158+ do {
159+ try validateURL ( baseAccessURL)
160+ } catch {
161+ loginError = error
157162 return
158163 }
159164 withAnimation {
@@ -170,12 +175,32 @@ struct LoginForm<S: Session>: View {
170175 }
171176}
172177
173- enum LoginError {
178+ @discardableResult
179+ func validateURL( _ url: String ) throws ( LoginError) -> URL {
180+ guard let url = URL ( string: url) else {
181+ throw LoginError . invalidURL
182+ }
183+ guard url. scheme == " https " else {
184+ throw LoginError . httpsRequired
185+ }
186+ guard url. host != nil else {
187+ throw LoginError . noHost
188+ }
189+ return url
190+ }
191+
192+ enum LoginError : Error {
193+ case httpsRequired
194+ case noHost
174195 case invalidURL
175196 case failedAuth( ClientError )
176197
177198 var description : String {
178199 switch self {
200+ case . httpsRequired:
201+ " URL must use HTTPS "
202+ case . noHost:
203+ " URL must have a host "
179204 case . invalidURL:
180205 " Invalid URL "
181206 case let . failedAuth( err) :
You can’t perform that action at this time.
0 commit comments