// POST -> api/createRoom | roomName in form data public static ResponseData CreateRoom(Session session, Dictionary <string, string> kwargs) { string roomName = kwargs["roomName"]; Guid userID = Guid.Parse(session.SessionData["UserID"]); ChatRoom chatRoom = new ChatRoom() { Name = roomName, IDList = new List <Guid>() { userID } }; JSONFileService.Add(chatRoom); JSONFileService.Update <User>(userID, chatRoom.ID); string status = string.Format("Created chatroom {0}", roomName); return(new ResponseData() { ContentType = "text", Encoding = Encoding.UTF8, Data = Encoding.UTF8.GetBytes(status), Status = ServerStatus.OK, Complete = true }); }
// 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 }); }