Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // ViewController.swift
- // loginSignup
- //
- // Created by Yan Rips on 08/02/2019.
- // Copyright © 2019 Yan Rips. All rights reserved.
- //
- import UIKit
- class ViewController: UIViewController {
- private let LOGIN_TYPE = 0
- private let LOGIN_TYPE_FAILED = 2
- private let SIGNUP_TYPE = 1
- private let STAGE_USERNAME = 0
- private let STAGE_PASSWORD = 1
- private var username:String = ""
- private var password:String = ""
- private var loginOrSignUP:Int = 0
- override func viewDidLoad() {
- super.viewDidLoad()
- }
- override func viewDidAppear(_ animated: Bool) {
- if validateUser(){
- signInScreen(animation: false)
- }
- initBtns()
- }
- func initBtns(){
- let loginBtn = UIButton(type: .system)
- loginBtn.frame = CGRect(x: view.frame.width/2-110, y: view.frame.height/2-80, width: 220, height: 80)
- loginBtn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 30)
- loginBtn.setTitle("Login", for: .normal)
- loginBtn.addTarget(self, action: #selector(loginInAlert), for: .touchUpInside)
- view.addSubview(loginBtn)
- let signUp = UIButton(type: .system) as UIButton
- signUp.frame = CGRect(x: view.frame.width/2-110, y: view.frame.height/2, width: 220, height: 80)
- signUp.titleLabel?.font = UIFont.boldSystemFont(ofSize: 30)
- signUp.setTitle("signUp", for: .normal)
- signUp.addTarget(self, action: #selector(signUpAlert), for: .touchUpInside)
- view.addSubview(signUp)
- }
- @objc func loginInAlert(warningMessage:Bool){
- var alert:UIAlertController
- if warningMessage {
- alert = initAlert(type: LOGIN_TYPE_FAILED, stage: STAGE_USERNAME)
- }else{
- alert = initAlert(type: LOGIN_TYPE, stage: STAGE_USERNAME)
- }
- present(alert, animated: true, completion: nil)
- }
- @objc func signUpAlert(){
- let alert = initAlert(type: SIGNUP_TYPE, stage: STAGE_USERNAME)
- present(alert, animated: true, completion: nil)
- }
- func initAlert(type:Int, stage:Int) -> UIAlertController{
- var title:String = ""
- var message:String = ""
- var placeHolder:String = ""
- var isSecure:Bool = false
- var confirmBtn:String = "continue"
- if(type == LOGIN_TYPE){
- title = "Login"
- loginOrSignUP = LOGIN_TYPE
- }
- if(type == SIGNUP_TYPE){
- title = "Sign Up"
- loginOrSignUP = SIGNUP_TYPE
- }
- if(stage == STAGE_USERNAME){
- message = "Please enter your username"
- placeHolder = "Username"
- if type == LOGIN_TYPE_FAILED{
- message = "Username or password is wrong \n Please enter your user name"
- title = "Failed to login, Try again"
- }
- }
- if(stage == STAGE_PASSWORD){
- message = "please enter your password"
- placeHolder = "Password"
- confirmBtn = title
- isSecure = true
- }
- let alert:UIAlertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
- alert.addTextField { (editText: UITextField) in
- editText.placeholder = placeHolder
- editText.isSecureTextEntry = isSecure
- let confirmAct = UIAlertAction(title: confirmBtn, style: .default, handler: { (alertAct: UIAlertAction) in
- if let text = editText.text{
- if(stage == self.STAGE_USERNAME){
- self.username = text
- if(type == self.LOGIN_TYPE || type == self.LOGIN_TYPE_FAILED){
- self.loginAlertPassword()
- }
- if(type == self.SIGNUP_TYPE){
- self.signUpAlertPassword()
- }
- }else if(stage == self.STAGE_PASSWORD){
- self.password = text
- self.loginOrSignupUser(username: self.username, password: self.password, loginOrSignup: self.loginOrSignUP)
- }
- }
- })
- let cancelAct = UIAlertAction(title: "cancel", style: .cancel, handler: nil )
- alert.addAction(cancelAct)
- alert.addAction(confirmAct)
- }
- return alert
- }
- func loginAlertPassword(){
- let alert = initAlert(type: LOGIN_TYPE, stage: STAGE_PASSWORD)
- present(alert, animated: true, completion: nil)
- }
- func signUpAlertPassword(){
- let alert = initAlert(type: SIGNUP_TYPE, stage: STAGE_PASSWORD)
- present(alert, animated: true, completion: nil)
- }
- func loginOrSignupUser(username:String, password:String, loginOrSignup:Int){
- let url = URL(string: "http://192.168.1.18:8080/IOSLoginTest_war_exploded/servlet?login=\(loginOrSignup)&username=\(username)&password=\(password)")
- let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
- if let data = data {
- let message:String = String(data: data, encoding: String.Encoding.utf8)!
- if(message.contains("success")){
- self.signInAndChangeScreen(username: username, password: password)
- }else{
- if(self.loginOrSignUP == 0){
- self.loginInAlert(warningMessage: true)
- }else{
- self.signUpAlert()
- }
- }
- }
- }
- task.resume()
- // Convert the data to JSON
- }
- func signInAndChangeScreen(username:String, password:String){
- if self.saveUserInCache(user: username, pass: password){
- self.signInScreen(animation: true)
- }
- }
- func saveUserInCache(user:String, pass:String) -> Bool{
- let preferences = UserDefaults.standard
- let usernameKey = "username"
- preferences.set(user, forKey: usernameKey)
- let passwordKey = "password"
- preferences.set(pass, forKey: passwordKey)
- let didSave = preferences.synchronize()
- if !didSave {
- print("could not save")
- return false
- }else{
- return true
- }
- }
- func signInScreen(animation:Bool){
- let signIn:SigninViewController = SigninViewController()
- present(signIn, animated: animation, completion: nil)
- }
- func validateUser() -> Bool{
- let preferences = UserDefaults.standard
- let usernameKey = "username"
- if preferences.object(forKey: usernameKey) == nil{
- return false //new User
- }else{
- return true //User Exsists
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement