private ResponseData FileLoader(string filename, string ext, ExtensionInfo extInfo) { ResponseData ret; if (File.Exists(filename)) { ret = new ResponseData() { Data = File.ReadAllBytes(filename), ContentType = extInfo.ContentType, Encoding = Encoding.UTF8, Status = ServerStatus.OK }; } else { ret = new ResponseData() { Status = ServerStatus.NotFound }; } return(ret); }
// POST -> api/login | username and password in form data public static ResponseData LoginHandler(Session session, Dictionary <string, string> kwargs) { string username = kwargs["username"]; string password = kwargs["password"]; string submitButton = kwargs["operation"]; string Status = ""; var user = JSONFileService.GetAll <User>().FirstOrDefault(user => user.Username == username); if (user != null) { if (submitButton == "register") { Status = "Username already taken!"; } else if (AesEncryptor.Compare(password, user)) { //successful login, redirect user to the app session.Authorized = true; session.SessionData.TryAdd("UserID", user.ID.ToString()); session.SessionData.TryAdd("Username", user.Username); var dataPacket = new JSONPacket(); if (user.Icon != null) { dataPacket.Redirect = "/welcome"; dataPacket.HasIcon = true; } else { dataPacket.HasIcon = false; } var ret = new ResponseData() { Data = Encoding.UTF8.GetBytes(dataPacket.ToString()), ContentType = "text/json", Complete = true, Status = ServerStatus.OK, Encoding = Encoding.UTF8 }; return(ret); } else { Status = "Wrong password!"; } } else { if (submitButton == "login") { Status = "No such user exists!"; } else { if (ParseCredentials(username, password)) { Status = "Registered new user!"; user = new User { Username = username, Password = password, DateCreated = DateTime.UtcNow.ToString() }; AesEncryptor.Encrypt(user); JSONFileService.Add(user); } else { Status = "Username and password cannot be empty!"; } } } var dataWrapper = new JSONPacket() { Data = Status, Redirect = null, HasIcon = true }; return(new ResponseData() { ContentType = "text/json", Encoding = Encoding.UTF8, Data = Encoding.UTF8.GetBytes(dataWrapper.ToString()), Status = ServerStatus.OK, Complete = true }); }