The next generation of the Teknik Services. Written in ASP.NET.
https://www.teknik.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
5.5 KiB
193 lines
5.5 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.Data; |
|
using System.Data.Entity; |
|
using System.Linq; |
|
using System.Net; |
|
using System.Security.Cryptography; |
|
using System.Security.Policy; |
|
using System.Text; |
|
using System.Web; |
|
using System.Web.Mvc; |
|
using System.Web.Security; |
|
using SecurityDriven.Inferno.Hash; |
|
using SecurityDriven.Inferno.Mac; |
|
using Teknik.Models; |
|
using Teknik.ViewModels; |
|
using SHA384 = Teknik.Helpers.SHA384; |
|
|
|
namespace Teknik.Controllers |
|
{ |
|
public class ProfileController : DefaultController |
|
{ |
|
private TeknikEntities db = new TeknikEntities(); |
|
|
|
[AllowAnonymous] |
|
// GET: Profile |
|
public ActionResult Index() |
|
{ |
|
return View(); |
|
} |
|
|
|
[HttpGet] |
|
[AllowAnonymous] |
|
// GET: Profile |
|
public ActionResult Login() |
|
{ |
|
return View(); |
|
} |
|
|
|
[HttpPost] |
|
[AllowAnonymous] |
|
public ActionResult Login(LoginViewModel model) |
|
{ |
|
if (ModelState.IsValid) |
|
{ |
|
if (model.IsValid()) |
|
{ |
|
FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe); |
|
return Json(new {result = "true"}); |
|
} |
|
} |
|
return Json(new { error = "Invalid User name or Password." }); |
|
} |
|
|
|
public ActionResult Logout() |
|
{ |
|
FormsAuthentication.SignOut(); |
|
return RedirectToAction("Index", "Home"); |
|
} |
|
|
|
[HttpPost] |
|
[AllowAnonymous] |
|
public ActionResult Register(RegisterViewModel model) |
|
{ |
|
if (ModelState.IsValid) |
|
{ |
|
var foundUser = db.Users.Where(b => b.Username == model.Username); |
|
if (foundUser.Any()) |
|
{ |
|
return Json(new {error = "That username already exists."}); |
|
} |
|
if (model.Password != model.ConfirmPassword) |
|
{ |
|
return Json(new {error = "Passwords must match."}); |
|
} |
|
if (model.Insert()) |
|
{ |
|
return RedirectToAction("Login", "Profile", new LoginViewModel { Username = model.Username, Password = model.Password }); |
|
} |
|
return Json(new { error = "You must include all fields." }); |
|
} |
|
return Json(new { error = "You must include all fields." }); |
|
} |
|
|
|
// GET: Profile/Details/5 |
|
public ActionResult Details(int? id) |
|
{ |
|
if (ModelState.IsValid) |
|
{ |
|
if (id == null) |
|
{ |
|
return new HttpStatusCodeResult(HttpStatusCode.BadRequest); |
|
} |
|
User user = db.Users.Find(id); |
|
if (user == null) |
|
{ |
|
return HttpNotFound(); |
|
} |
|
return View(user); |
|
} |
|
return HttpNotFound(); |
|
} |
|
|
|
// GET: Profile/Create |
|
public ActionResult Create() |
|
{ |
|
return View(); |
|
} |
|
|
|
// POST: Profile/Create |
|
// To protect from overposting attacks, please enable the specific properties you want to bind to, for |
|
// more details see http://go.microsoft.com/fwlink/?LinkId=317598. |
|
[HttpPost] |
|
[ValidateAntiForgeryToken] |
|
public ActionResult Create([Bind(Include = "UserId,Username")] User user) |
|
{ |
|
if (ModelState.IsValid) |
|
{ |
|
db.Users.Add(user); |
|
db.SaveChanges(); |
|
return RedirectToAction("Index"); |
|
} |
|
|
|
return View(user); |
|
} |
|
|
|
// GET: Profile/Edit/5 |
|
public ActionResult Edit(int? id) |
|
{ |
|
if (id == null) |
|
{ |
|
return new HttpStatusCodeResult(HttpStatusCode.BadRequest); |
|
} |
|
User user = db.Users.Find(id); |
|
if (user == null) |
|
{ |
|
return HttpNotFound(); |
|
} |
|
return View(user); |
|
} |
|
|
|
// POST: Profile/Edit/5 |
|
// To protect from overposting attacks, please enable the specific properties you want to bind to, for |
|
// more details see http://go.microsoft.com/fwlink/?LinkId=317598. |
|
[HttpPost] |
|
[ValidateAntiForgeryToken] |
|
public ActionResult Edit([Bind(Include = "UserId,Username")] User user) |
|
{ |
|
if (ModelState.IsValid) |
|
{ |
|
db.Entry(user).State = EntityState.Modified; |
|
db.SaveChanges(); |
|
return RedirectToAction("Index"); |
|
} |
|
return View(user); |
|
} |
|
|
|
// GET: Profile/Delete/5 |
|
public ActionResult Delete(int? id) |
|
{ |
|
if (id == null) |
|
{ |
|
return new HttpStatusCodeResult(HttpStatusCode.BadRequest); |
|
} |
|
User user = db.Users.Find(id); |
|
if (user == null) |
|
{ |
|
return HttpNotFound(); |
|
} |
|
return View(user); |
|
} |
|
|
|
// POST: Profile/Delete/5 |
|
[HttpPost, ActionName("Delete")] |
|
[ValidateAntiForgeryToken] |
|
public ActionResult DeleteConfirmed(int id) |
|
{ |
|
User user = db.Users.Find(id); |
|
db.Users.Remove(user); |
|
db.SaveChanges(); |
|
return RedirectToAction("Index"); |
|
} |
|
|
|
protected override void Dispose(bool disposing) |
|
{ |
|
if (disposing) |
|
{ |
|
db.Dispose(); |
|
} |
|
base.Dispose(disposing); |
|
} |
|
} |
|
}
|
|
|