From c51d5e5149af1f9701176f8da90316faaea07ef1 Mon Sep 17 00:00:00 2001 From: Vladislav Date: Thu, 6 Aug 2020 00:46:41 +0300 Subject: [PATCH] Lesson7 --- .DS_Store | Bin 0 -> 10244 bytes lesson7/Main.swift | 93 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 .DS_Store create mode 100644 lesson7/Main.swift diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a52454af68d467df989bc6a8e4def6988fdb038e GIT binary patch literal 10244 zcmeHM%Wl&^6rG`kIsrr%NWjh@A-ZTw{D>n!NFjtpcSu37D5$lY&{}dlQIist5EKcC zWyKc$pyChM(GBngtYO7pz@10)aAF&YQU!4*nz`edb7zussUFVMy`RS;789)Y*foWg>p4q%;r=`Uf z89)Y*fj$HLe9)nCTU53utvEWM5g`EBSr`@t`Va>QA6?m^vOQ^qE37G_2dZ4D3Nfg3 zhk2dD!4{S6Nh{q6mF|S9ovDgYsMsC+bO9%{C@r?g05UMn0FT}0NI+_&37?_(op~_B zZ>C#N7k-KYy(rq0(S9HO9S}?LXs_LDc!5BF@fv~OY~^xa>4}-ylc(l1EvseEW}j5H zSi914TRY8?yS>Vr~`~re(Cu+Wf^%$21Cyx@9=sMZHrf$ z*@UW-hn$nw{q`O7MkzFdO{22G>Ww~T3{hw0vLZsebmiOojC*ire4RS0{syYCmA2cn z%61sAa1(amzhd;;TB8!un}Ar3mC*V>B(zc`w1y?z`&`^ytxk{-Py-3$QK=GIi4xio z3HK5uw5Lr%6YfIOGLHBzv{NOthb8=&*}eX{HbFu_4J3?5rAlZgN|=vG_#;um{FF&( z+a^eO~_`knDqm@qc~_k+rg z=>9y{u0vgi$_vN!q!ljEa0nk4>3F!{>G%aTmgANem@g{ZlUBIHxNrw6v-yAjWq?d| VV*G!YRQ=OLD#rg1^!-!u|1W`kH3k3x literal 0 HcmV?d00001 diff --git a/lesson7/Main.swift b/lesson7/Main.swift new file mode 100644 index 0000000..e198295 --- /dev/null +++ b/lesson7/Main.swift @@ -0,0 +1,93 @@ +// +// main.swift +// lesson7 +// +// Created by Vladislav Elkin on 05.08.2020. +// Copyright © 2020 Vladislav Elkin. All rights reserved. +// + +import Foundation + +enum AuthorizationError: Error, CustomStringConvertible { + case userNotFound + case invalidLoginOrPassword + case userBlocked + + var description: String { + switch self { + case .invalidLoginOrPassword: + return "Неправильный логин или пароль" + case .userBlocked: + return "Юзер заблокирован" + case .userNotFound: + return "Юзер не найден" + } + } +} + +enum RegistrationError: Error { + case userExists +} + +struct User +{ + var login: String + var password: String + var isBlocked: Bool + +} + +class Site +{ + var users = [ + "123@mail.ru": User(login: "123@mail.ru", password: "123123", isBlocked: false), + "user@gmail.com": User(login: "user@gmail.com", password: "admin", isBlocked: false), + "root@site.ru": User(login: "root@site.ru", password: "qwerty", isBlocked: true) + ] + + func login(_ username: String, _ password: String) throws -> Bool + { + guard let user = users[username] else { + throw AuthorizationError.userNotFound + } + + if user.isBlocked { + throw AuthorizationError.userBlocked + } + + if user.login == username && user.password == password { + return true + } else { + throw AuthorizationError.invalidLoginOrPassword + } + + } + + func register(username: String, password: String) throws -> Bool + { + if let user = users[username] { + throw RegistrationError.userExists + } + + users[username] = User(login: username, password: password, isBlocked: false) + + return true + } +} + +var site = Site() + +do { + var success = try site.register(username: "newuser@mail.ru", password: "9999") + print(success) + success = try site.login("newuser@mail.ru", "97999") + print(success) +} +catch RegistrationError.userExists { + print("Юзер с таким именем уже зарегистрирован") +} catch let userError as AuthorizationError +{ + print(userError.description) +} + +