Пример #1
0
        public async Task <IActionResult> UpdateRole([FromBody] User updateUser, [FromHeader] string APIKey)
        {
            try
            {
                //if (updateUser.UserName == "" || updateUser.Role == "")
                //    throw new Exception("NOT DONE: An error occured");

                var userExists = await UserDatabaseAccess.UserExists(updateUser.UserName, base._context);

                if (!userExists)
                {
                    throw new Exception("NOT DONE: Username does not exist");
                }

                var user = await UserDatabaseAccess.GetUserWithName(updateUser.UserName, base._context);

                string[] allowedRoles = { "Admin", "User" };

                if (!allowedRoles.Contains(updateUser.Role))
                {
                    throw new Exception("NOT DONE: Role does not exist");
                }

                else if (allowedRoles.Contains(updateUser.Role))
                {
                    await UserDatabaseAccess.ChangeRole(updateUser, user, _context);

                    var authUser = await UserDatabaseAccess.GetUser(APIKey, base._context);

                    string Method = this.HttpContext.Request.Method;
                    string Path   = this.HttpContext.Request.Path;
                    var    Log    = authUser.Role + " requested " + Method + " " + Path;

                    await UserDatabaseAccess.AddLog(Log, authUser, base._context);

                    return(StatusCode(200, "DONE"));
                }

                throw new Exception("NOT DONE: An error occured");
            }
            catch (Exception e)
            {
                return(StatusCode(400, e.Message));
            }
        }