Skip to content

Instantly share code, notes, and snippets.

@royhowie
Created May 22, 2015 22:54
Show Gist options
  • Save royhowie/75db480637796099a74d to your computer and use it in GitHub Desktop.
Save royhowie/75db480637796099a74d to your computer and use it in GitHub Desktop.
import UIKit
class LoginViewController: UIViewController {
let domain = "http://plebvote.com:1337"
let URI = "/order/login"
@IBOutlet weak var usernameTxt: UITextField!
@IBOutlet weak var passwordTxt: UITextField!
@IBAction func loginTouch (sender: AnyObject) {
let email : String = usernameTxt.text
let password : String = passwordTxt.text
if email == "" || password == "" {
showAlert(title: "Sign in failed", message: "Missing username or password!")
} else {
let dict = ["email" : email, "password" : password ]
post(dict, domain + URI, {( success, results ) in
if success {
NSLog("login successful")
var prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
prefs.setObject(email, forKey : "email")
prefs.setObject(password, forKey : "password")
prefs.setObject(results["_id"], forKey : "userId")
prefs.setObject(results["hash"], forKey : "userHash")
prefs.setInteger(1, forKey: "isLoggedIn")
prefs.synchronize()
self.performSegueWithIdentifier("goToScanner", sender: self)
} else {
self.showAlert(title : "Log in failed", message : toString(results["message"]))
}
})
}
}
func showAlert (#title : String, message : String) {
let alert : UIAlertView = UIAlertView()
alert.title = title
alert.message = message
alert.delegate = self
alert.addButtonWithTitle("okay")
alert.show()
}
}
func post(params : Dictionary<String, String>, url : String, done : (success: Bool, results: NSDictionary) -> ()) {
var request = NSMutableURLRequest(URL: NSURL(string: url)!)
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
var err: NSError?
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var task = session.dataTaskWithRequest(request, completionHandler: { data, response, error -> Void in
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
var err: NSError?
var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as? NSDictionary
if (err != nil) {
println(err!.localizedDescription)
done(success : false, results : ["message" : "Unable to parse JSON"])
} else {
let s = json["_id"] != nil && json["hash"] != nil
done(success : s , results : json!)
}
})
task.resume()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment