public async Task <IActionResult> ChangePassword(UserModel model) { var calculationService = new TrafficCalculationService(); var changePasswordModel = model.ChangePasswordModel; if (changePasswordModel.Username.Equals("admin")) { return(View("Admin", new UserModel() { ChangePasswordMessage = "Password for the admin cannot be changed" })); } if (changePasswordModel.Password == null || changePasswordModel.Password.Length < 6) { return(View("Admin", new UserModel() { CreateMessage = "Password needs to be 6 characters." })); } var apiKey = GetApiKey(); var result = await calculationService.ChangePassword(changePasswordModel.Username, apiKey, changePasswordModel.Password); return(View("Admin", new UserModel() { ChangePasswordMessage = result })); }
public async Task <IActionResult> CreateUser(UserModel model) { var calculationService = new TrafficCalculationService(); var createModel = model.CreateModel; if (createModel.Username == null || createModel.Username.Length < 4) { return(View("Admin", new UserModel() { CreateMessage = "Username needs to be 4 characters." })); } if (createModel.Password == null || createModel.Password.Length < 6) { return(View("Admin", new UserModel() { CreateMessage = "Password needs to be 6 characters." })); } var adminString = createModel.Admin ? "true" : "false"; var apiKey = GetApiKey(); var result = await calculationService.CreateUser(createModel.Username, createModel.Password, createModel.Name, adminString, apiKey); return(View("Admin", new UserModel() { CreateMessage = result })); }
public async Task <IActionResult> LoginAction(LoginModel model) { if (model.Username == null || model.Password == null || model.Username.Length < 4 || model.Password.Length < 6) { return(View("Login", new LoginModel() { Message = "Invalid username or password." })); } var calculationService = new TrafficCalculationService(); var user = await calculationService.Login(model.Username, model.Password); if (user != null) { HttpContext.Session.Set("admin", Encoding.ASCII.GetBytes(user.admin.ToString())); HttpContext.Session.Set("apiKey", Encoding.ASCII.GetBytes(user.apiKey)); return(RedirectToAction("Home", "Traffic")); } return(View("Login", new LoginModel() { Message = "Login failed." })); }
public async Task <IActionResult> DeleteUser(UserModel model) { var calculationService = new TrafficCalculationService(); var deleteModel = model.DeleteModel; if (deleteModel.Username.Equals("admin")) { return(View("Admin", new UserModel() { DeleteMessage = "The admin user can't be deleted." })); } var apiKey = GetApiKey(); var result = await calculationService.DeleteUser(deleteModel.Username, apiKey); return(View("Admin", new UserModel() { DeleteMessage = result })); }