Advertisement
Guest User

Untitled

a guest
Mar 6th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.99 KB | None | 0 0
  1. //
  2. // ViewController.swift
  3. // LoginScreenApp
  4. //
  5.  
  6.  
  7. import UIKit
  8.  
  9. class ViewController: UIViewController {
  10.  
  11.  
  12. let login_url = "http://www.kaleidosblog.com/tutorial/login/api/Login"
  13. let checksession_url = "http://www.kaleidosblog.com/tutorial/login/api/CheckSession"
  14.  
  15.  
  16. @IBOutlet var username_input: UITextField!
  17. @IBOutlet var password_input: UITextField!
  18. @IBOutlet var login_button: UIButton!
  19.  
  20. var login_session:String = ""
  21.  
  22.  
  23. override func viewDidLoad() {
  24. super.viewDidLoad()
  25.  
  26.  
  27. username_input.text = "try@me.com"
  28. password_input.text = "test"
  29.  
  30.  
  31. let preferences = UserDefaults.standard
  32. if preferences.object(forKey: "session") != nil
  33. {
  34. login_session = preferences.object(forKey: "session") as! String
  35. check_session()
  36. }
  37. else
  38. {
  39. LoginToDo()
  40. }
  41.  
  42.  
  43. }
  44.  
  45.  
  46. @IBAction func DoLogin(_ sender: AnyObject) {
  47.  
  48. if(login_button.titleLabel?.text == "Logout")
  49. {
  50. let preferences = UserDefaults.standard
  51. preferences.removeObject(forKey: "session")
  52.  
  53. LoginToDo()
  54. }
  55. else{
  56. login_now(username:username_input.text!, password: password_input.text!)
  57. }
  58.  
  59. }
  60.  
  61.  
  62. func login_now(username:String, password:String)
  63. {
  64. let post_data: NSDictionary = NSMutableDictionary()
  65.  
  66.  
  67. post_data.setValue(username, forKey: "username")
  68. post_data.setValue(password, forKey: "password")
  69.  
  70. let url:URL = URL(string: login_url)!
  71. let session = URLSession.shared
  72.  
  73. let request = NSMutableURLRequest(url: url)
  74. request.httpMethod = "POST"
  75. request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
  76.  
  77. var paramString = ""
  78.  
  79.  
  80. for (key, value) in post_data
  81. {
  82. paramString = paramString + (key as! String) + "=" + (value as! String) + "&"
  83. }
  84.  
  85. request.httpBody = paramString.data(using: String.Encoding.utf8)
  86.  
  87. let task = session.dataTask(with: request as URLRequest, completionHandler: {
  88. (
  89. data, response, error) in
  90.  
  91. guard let _:Data = data, let _:URLResponse = response , error == nil else {
  92.  
  93. return
  94. }
  95.  
  96.  
  97.  
  98. let json: Any?
  99.  
  100. do
  101. {
  102. json = try JSONSerialization.jsonObject(with: data!, options: [])
  103. }
  104. catch
  105. {
  106. return
  107. }
  108.  
  109. guard let server_response = json as? NSDictionary else
  110. {
  111. return
  112. }
  113.  
  114.  
  115. if let data_block = server_response["data"] as? NSDictionary
  116. {
  117. if let session_data = data_block["session"] as? String
  118. {
  119. self.login_session = session_data
  120.  
  121. let preferences = UserDefaults.standard
  122. preferences.set(session_data, forKey: "session")
  123.  
  124. DispatchQueue.main.async(execute: self.LoginDone)
  125. }
  126. }
  127.  
  128.  
  129.  
  130. })
  131.  
  132. task.resume()
  133.  
  134.  
  135. }
  136.  
  137.  
  138.  
  139.  
  140.  
  141. func check_session()
  142. {
  143. let post_data: NSDictionary = NSMutableDictionary()
  144.  
  145.  
  146. post_data.setValue(login_session, forKey: "session")
  147.  
  148. let url:URL = URL(string: checksession_url)!
  149. let session = URLSession.shared
  150.  
  151. let request = NSMutableURLRequest(url: url)
  152. request.httpMethod = "POST"
  153. request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
  154.  
  155. var paramString = ""
  156.  
  157.  
  158. for (key, value) in post_data
  159. {
  160. paramString = paramString + (key as! String) + "=" + (value as! String) + "&"
  161. }
  162.  
  163. request.httpBody = paramString.data(using: String.Encoding.utf8)
  164.  
  165. let task = session.dataTask(with: request as URLRequest, completionHandler: {
  166. (
  167. data, response, error) in
  168.  
  169. guard let _:Data = data, let _:URLResponse = response , error == nil else {
  170.  
  171. return
  172. }
  173.  
  174.  
  175. let json: Any?
  176.  
  177. do
  178. {
  179. json = try JSONSerialization.jsonObject(with: data!, options: [])
  180. }
  181. catch
  182. {
  183. return
  184. }
  185.  
  186. guard let server_response = json as? NSDictionary else
  187. {
  188. return
  189. }
  190.  
  191. if let response_code = server_response["response_code"] as? Int
  192. {
  193. if(response_code == 200)
  194. {
  195. DispatchQueue.main.async(execute: self.LoginDone)
  196.  
  197.  
  198. }
  199. else
  200. {
  201. DispatchQueue.main.async(execute: self.LoginToDo)
  202. }
  203. }
  204.  
  205.  
  206.  
  207. })
  208.  
  209. task.resume()
  210.  
  211.  
  212. }
  213.  
  214.  
  215.  
  216.  
  217.  
  218. func LoginDone()
  219. {
  220. username_input.isEnabled = false
  221. password_input.isEnabled = false
  222.  
  223. login_button.isEnabled = true
  224.  
  225.  
  226. login_button.setTitle("Logout", for: .normal)
  227. }
  228.  
  229. func LoginToDo()
  230. {
  231. username_input.isEnabled = true
  232. password_input.isEnabled = true
  233.  
  234. login_button.isEnabled = true
  235.  
  236.  
  237. login_button.setTitle("Login", for: .normal)
  238. }
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement