public User GetByUsername(string username) { using (var db = new DatabaseContext()) { return db.Users.SingleOrDefault(p => p.Username == username); } }
public IEnumerable<User> Get() { using (var db = new DatabaseContext()) { return db.Users.ToList(); } }
public IEnumerable<Task> GetTasksByProject(int id) { using (var db = new DatabaseContext()) { return db.Projects.SingleOrDefault(p => p.Id == id).Tasks.ToList(); } }
// GET: api/Tasks public IEnumerable<Task> Get() { using (var db = new DatabaseContext()) { return db.Tasks.ToList(); } }
// GET: api/Projects public IEnumerable<Project> Get() { using (var db = new DatabaseContext()) { return db.Projects.Include(x => x.Tasks).ToList(); } }
// GET: api/Projects/5 public Project Get(int id) { using (var db = new DatabaseContext()) { return db.Projects.Include(x => x.Tasks).SingleOrDefault(t => t.Id == id); } }
// GET: api/Tasks/5 public Task Get(int id) { using (var db = new DatabaseContext()) { return db.Tasks.SingleOrDefault(t => t.Id == id); } }
public void Post([FromBody]User user) { using (var db = new DatabaseContext()) { db.Users.Add(user); db.SaveChanges(); } }
public void Delete(int id) { using (var db = new DatabaseContext()) { db.Users.Remove(db.Users.Find(id)); db.SaveChanges(); } }
public void Put(int id, [FromBody]Project Project) { using (var db = new DatabaseContext()) { db.Entry(db.Projects.Find(id)).CurrentValues.SetValues(Project); db.SaveChanges(); } }
public void Put(int id, [FromBody]Task task) { using (var db = new DatabaseContext()) { db.Entry(db.Tasks.Find(id)).CurrentValues.SetValues(task); db.SaveChanges(); } }
public void Post([FromBody]Task task) { using (var db = new DatabaseContext()) { db.Tasks.Add(task); db.SaveChanges(); } }
// PUT api/values/5 public void Put(int id, [FromBody]User user) { using (var db = new DatabaseContext()) { db.Entry(db.Users.Find(id)).CurrentValues.SetValues(user); db.SaveChanges(); } }
public void Post([FromBody]Project Project) { using (var db = new DatabaseContext()) { db.Projects.Add(Project); db.SaveChanges(); } }
// GET api/users/5 public User Get(int id) { using (var db = new DatabaseContext()) { return db.Users .Include(x => x.Projects) .Include(x => x.UserTasks) .SingleOrDefault(x => x.Id == id); } }
public IHttpActionResult Login([FromBody]Credentials credentials) { using (var db = new DatabaseContext()) { var user = db.Users.SingleOrDefault(u => u.Username == credentials.Username); if(user != null && user.Password == credentials.PasswordHash) { return Ok(new Token(credentials.Username, HttpContext.Current.Request.UserHostAddress).Encrypt()); } return Unauthorized(); } }
public override void OnAuthorization(HttpActionContext actionContext) { try { const string tokenName = "api-token"; // Check if api token is set in the header if (actionContext.Request.Headers.Contains(tokenName)) { var tokenString = actionContext.Request.Headers.GetValues(tokenName).First(); Token token = Token.Decrypt(tokenString); User user; // Check that user exists on db using (var db = new DatabaseContext()) { user = db.Users.SingleOrDefault(u => u.Username == token.Username); } if (user != null) { // Check that the IP Address is the same bool requestIPMatchesTokenIP = token.IP.Equals(GetClientIp(actionContext)); if (!requestIPMatchesTokenIP) { actionContext.Response = actionContext.Request.CreateErrorResponse( HttpStatusCode.Unauthorized, "IP does not match!"); return; } // Check Users collection var users = Users.Split(',').ToList(); if(Users.Count() > 0 && !users.Contains(user.Username)) { actionContext.Response = actionContext.Request.CreateErrorResponse( HttpStatusCode.Unauthorized, "User is not authorized for this operation!"); return; } } else { actionContext.Response = actionContext.Request.CreateErrorResponse( HttpStatusCode.Unauthorized, "User not in DB!"); return; } } else { actionContext.Response = actionContext.Request.CreateErrorResponse( HttpStatusCode.Unauthorized, "Please specify your api-token!"); return; } } catch(Exception exception) { actionContext.Response = actionContext.Request .CreateErrorResponse( HttpStatusCode.InternalServerError, $"Internal Server Errror: {exception.Message}!"); return; } }