コード例 #1
0
 public User GetByUsername(string username)
 {
     using (var db = new DatabaseContext())
     {
         return db.Users.SingleOrDefault(p => p.Username == username);
     }
 }
コード例 #2
0
 public IEnumerable<User> Get()
 {
     using (var db = new DatabaseContext())
     {
         return db.Users.ToList();
     }
 }
コード例 #3
0
 public IEnumerable<Task> GetTasksByProject(int id)
 {
     using (var db = new DatabaseContext())
     {
         return db.Projects.SingleOrDefault(p => p.Id == id).Tasks.ToList();
     }
 }
コード例 #4
0
 // GET: api/Tasks
 public IEnumerable<Task> Get()
 {
     using (var db = new DatabaseContext())
     {
         return db.Tasks.ToList();
     }
 }
コード例 #5
0
 // GET: api/Projects
 public IEnumerable<Project> Get()
 {
     using (var db = new DatabaseContext())
     {
         return db.Projects.Include(x => x.Tasks).ToList();
     }
 }
コード例 #6
0
 // 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);
     }
 }
コード例 #7
0
 // GET: api/Tasks/5
 public Task Get(int id)
 {
     using (var db = new DatabaseContext())
     {
         return db.Tasks.SingleOrDefault(t => t.Id == id);
     }
 }
コード例 #8
0
 public void Post([FromBody]User user)
 {
     using (var db = new DatabaseContext())
     {
         db.Users.Add(user);
         db.SaveChanges();
     }
 }
コード例 #9
0
 public void Delete(int id)
 {
     using (var db = new DatabaseContext())
     {
         db.Users.Remove(db.Users.Find(id));
         db.SaveChanges();
     }
 }
コード例 #10
0
 public void Put(int id, [FromBody]Project Project)
 {
     using (var db = new DatabaseContext())
     {
         db.Entry(db.Projects.Find(id)).CurrentValues.SetValues(Project);
         db.SaveChanges();
     }
 }
コード例 #11
0
 public void Put(int id, [FromBody]Task task)
 {
     using (var db = new DatabaseContext())
     {
         db.Entry(db.Tasks.Find(id)).CurrentValues.SetValues(task);
         db.SaveChanges();
     }
 }
コード例 #12
0
 public void Post([FromBody]Task task)
 {
     using (var db = new DatabaseContext())
     {
         db.Tasks.Add(task);
         db.SaveChanges();
     }
 }
コード例 #13
0
 // 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();
     }
 }
コード例 #14
0
 public void Post([FromBody]Project Project)
 {
     using (var db = new DatabaseContext())
     {
         db.Projects.Add(Project);
         db.SaveChanges();
     }
 }
コード例 #15
0
 // 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);
     }
 }
コード例 #16
0
        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();
            }
        }
コード例 #17
0
        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;
            }
        }