예제 #1
0
        public async void UpdateAttack([FromBody] object attack)
        {
            Attack parsed  = null;
            User   context = await GetContextUser();

            if (context is null)
            {
                Response.StatusCode = 403;
                return;
            }
            try
            {
                parsed = (Attack)attack;
                UserDatabaseInterface.updateAttack(context.username, parsed);
            }
            catch (Exception ex)
            {
                if (ex is ArgumentException || ex is InvalidCastException)
                {
                    Response.StatusCode = 400;
                }
                else
                {
                    throw;
                }
            }
        }
        public IActionResult AttackList()
        {
            string username = HttpContext.Session.GetString("username");
            User   user     = UserDatabaseInterface.readUser(username);

            if (username is null || user is null)
            {
                return(RedirectToAction("Index", "Home"));
            }
예제 #3
0
        public async void DeleteUser()
        {
            User context = await GetContextUser();

            if ((context is null))
            {
                Response.StatusCode = 403;
                return;
            }
            UserDatabaseInterface.deleteUser(context.username);
        }
예제 #4
0
        public async Task <string> ReadUser()
        {
            User context = await GetContextUser();

            if ((context is null))
            {
                Response.StatusCode = 403;
                return(null);
            }
            return(new JavaScriptSerializer().Serialize(UserDatabaseInterface.readUser(context.username)));
        }
예제 #5
0
        public IActionResult Login(string username, string password)
        {
            User check = UserDatabaseInterface.readUser(username);

            if (!(check is null) && check.validPassword(password, username))
            {
                HttpContext.Session.SetString("username", username);

                return(RedirectToAction("Index", "Home"));
            }
            return(View());
        }
예제 #6
0
        public void CreateUser([FromBody] object user)
        {
            User parsed;

            try
            {
                parsed = (User)user;
                UserDatabaseInterface.createUser(parsed);
            }
            catch (InvalidCastException)
            {
                Response.StatusCode = 400;
            }
        }
예제 #7
0
        public IActionResult CreateAccount(string username, string password, string passwordcon)
        {
            User check = UserDatabaseInterface.readUser(username);

            if ((check is null) && password.Equals(passwordcon))
            {
                UserDatabaseInterface.createUser(new Models.User {
                    username = username, password = Models.User.hashPassword(password, username)
                });
                HttpContext.Session.SetString("username", username);

                return(RedirectToAction("Index", "Home"));
            }
            return(View());
        }
예제 #8
0
        public async void DeleteAttack(int id)
        {
            User context = await GetContextUser();

            if (context is null)
            {
                Response.StatusCode = 403;
                return;
            }
            try
            {
                UserDatabaseInterface.deleteAttack(context.username, id);
            }
            catch (ArgumentException ex)
            {
                Response.StatusCode = 400;
            }
        }
예제 #9
0
        public async Task <string> ReadAttacks()
        {
            User context = await GetContextUser();

            if (context is null)
            {
                Response.StatusCode = 403;
                return(null);
            }
            try
            {
                return(new JavaScriptSerializer().Serialize(UserDatabaseInterface.readAttacks(context.username)));
            }
            catch (ArgumentException ex)
            {
                Response.StatusCode = 400;
                return(null);
            }
        }
예제 #10
0
        public async Task <string> getDPRCalculationForAttack(int id)
        {
            User context = await GetContextUser();

            if (context is null)
            {
                Response.StatusCode = 403;
                return(null);
            }
            try
            {
                var attack = UserDatabaseInterface.readAttack(context.username, id);
                return(new JavaScriptSerializer().Serialize(attack.DPRCaclulation()));
            }
            catch (ArgumentException ex)
            {
                Response.StatusCode = 400;
                return(null);
            }
        }
예제 #11
0
        public async void UpdateUser([FromBody] object user)
        {
            User context = await GetContextUser();

            User parsed;

            try
            {
                parsed = (User)user;
                if ((context is null) || !context.username.Equals(parsed.username))
                {
                    Response.StatusCode = 403;
                    return;
                }
                parsed.attacks = context.attacks;
                UserDatabaseInterface.updateUser(parsed);
            }
            catch (InvalidCastException)
            {
                Response.StatusCode = 400;
            }
        }
예제 #12
0
        public async Task <User> Authenticate(HttpContext context)
        {
            string authHeader = context.Request.Headers["Authorization"];

            if (authHeader != null && authHeader.StartsWith("Basic"))
            {
                string   encodedUsernamePassword = authHeader.Substring("Basic ".Length).Trim();
                Encoding encoding         = Encoding.GetEncoding("iso-8859-1");
                string   usernamePassword = encoding.GetString(Convert.FromBase64String(encodedUsernamePassword));
                int      seperatorIndex   = usernamePassword.IndexOf(':');
                string   username         = usernamePassword.Substring(0, seperatorIndex);
                string   password         = usernamePassword.Substring(seperatorIndex + 1);
                User     user             = UserDatabaseInterface.readUser(username);
                if (!(user is null))
                {
                    if (user.validPassword(password, username))
                    {
                        return(user);
                    }
                }
            }
            return(null);
        }