public async Task <IActionResult> SendEmailPermissionsChanged(string email)
        {
            if (string.IsNullOrWhiteSpace(email))
            {
                return(BadRequest("No email entered"));
            }

            var user = new User
            {
                Name    = "Johh",
                Surname = "Smith",
                Email   = email,
                Claims  = new string[] { ClaimType.isAdmin.ToString() }
            };

            var response = await _sendGridService.SendPermissionsChangedEmailAsync(email, user);

            return(Ok(response));
        }
Esempio n. 2
0
        /// <summary>
        /// Sets as admin
        /// </summary>
        /// <param name="id">User Id</param>
        /// <param name="email">Email who initiated</param>
        /// <returns>Void</returns>
        public async Task <bool?> ToggleIsAdmin(int id, string email)
        {
            if (id < 0)
            {
                _logger.LogDebug("Tried to update Main User");
                return(false);
            }

            var user = await _context.Users.FindAsync(id);

            if (user == null)
            {
                _logger.LogDebug($"User with Id = {id} not found");
                return(false);
            }

            if (user.isPermanent)
            {
                _logger.LogDebug("Tried to update permanent User");
                return(false);
            }

            if (string.Equals(user.Email, email))
            {
                _logger.LogDebug("Can not toggle own isAdmin claim");
                return(null);
            }

            List <string> list = new List <string>();

            if (user.Claims == null)
            {
                list.Add(ClaimType.isAdmin.ToString());
                user.Claims = list.ToArray();
                try
                {
                    await _context.SaveChangesAsync();

                    await _sendGridService.SendPermissionsChangedEmailAsync(email, user);

                    return(true);
                }
                catch (Exception)
                {
                    _logger.LogDebug("Error on saving when setting as Admin");
                    return(false);
                }
            }

            if (user.Claims.ToList().Contains(ClaimType.isAdmin.ToString()))
            {
                list = user.Claims.ToList();
                list.Remove(ClaimType.isAdmin.ToString());
                user.Claims = list.ToArray();

                try
                {
                    await _context.SaveChangesAsync();

                    await _sendGridService.SendPermissionsChangedEmailAsync(email, user);

                    return(true);
                }
                catch (Exception)
                {
                    _logger.LogDebug("Error on saving when removing isAdmin");
                    return(false);
                }
            }

            list = user.Claims.ToList();
            list.Add(ClaimType.isAdmin.ToString());
            user.Claims = list.ToArray();

            try
            {
                await _context.SaveChangesAsync();

                await _sendGridService.SendPermissionsChangedEmailAsync(email, user);

                return(true);
            }
            catch (Exception)
            {
                _logger.LogDebug("Error on saving when setting as Admin");
                return(false);
            }
        }