public HttpResponseMessage Delete([FromUri] string Username)
        {
            IEnumerable <string> values;

            this.Request.Headers.TryGetValues("ApiKey", out values);

            foreach (string v in values)
            {
                if (ud.CheckApi(v))
                {
                    ud.AddUserLogs("User Requested /user/removeuser", v);
                }
            }

            foreach (string v in values)
            {
                if (ud.CheckApiandUserName(v, Username))
                {
                    ud.DeleteUserApi(v);
                    return(Request.CreateErrorResponse(HttpStatusCode.OK, "true"));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.OK, "false"));
                }
            }
            return(Request.CreateErrorResponse(HttpStatusCode.OK, "false"));
        }
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            // Task5
            // TODO:  Find if a header ‘ApiKey’ exists, and if it does, check the database to determine if the given API Key is valid
            // Then authorise the principle on the current thread using a claim, claimidentity and claimsprinciple

            UserDatabaseAccess userDatabaseAccess = new UserDatabaseAccess();

            IEnumerable <string> values;

            request.Headers.TryGetValues("ApiKey", out values);
            if (values != null)
            {
                foreach (string v in values)
                {
                    if (userDatabaseAccess.CheckApi(v))
                    {
                        User user   = userDatabaseAccess.CheckApiForUser(v);
                        var  claims = new List <Claim>
                        {
                            new Claim(ClaimTypes.Name, user.UserName, ClaimTypes.Role, user.UserRole.ToString())
                        };
                        var id        = new ClaimsIdentity(claims, authenticationType: "ApiKey");
                        var principle = new ClaimsPrincipal(id);
                        Thread.CurrentPrincipal = principle;
                    }
                }
            }
            return(base.SendAsync(request, cancellationToken));
        }
Esempio n. 3
0
        public HttpResponseMessage Get()
        {
            IEnumerable <string> values;

            this.Request.Headers.TryGetValues("ApiKey", out values);

            foreach (string v in values)
            {
                if (ud.CheckApi(v))
                {
                    ud.AddUserLogs("User Requested /user/removeuser", v);
                }
            }

            foreach (string v in values)
            {
                User user = ud.CheckApiForUser(v);
                return(Request.CreateErrorResponse(HttpStatusCode.OK, "Hello " + user.UserName));
            }
            return(Request.CreateErrorResponse(HttpStatusCode.OK, "Hello"));
        }