using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.Core; using Tango.Web; namespace Tango.PasswordChanger.CLI { class Program { private static DataSource dataSource = new DataSource(); static void Main(string[] args) { dataSource.Address = "twine.database.windows.net"; dataSource.IntegratedSecurity = false; dataSource.UserName = "Roy"; dataSource.Password = "Aa123456"; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Welcome to password changed!"); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine(); Console.Write("Select Environments (eg DEV,TEST): "); String envString = Console.ReadLine(); Console.Write("Email: "); String email = Console.ReadLine(); Console.Write("Password: "); String password = Console.ReadLine(); try { if (envString.IsNotNullOrEmpty()) { String[] envs = envString.Split(',').Select(x => x.Trim()).ToArray(); foreach (var env in envs) { ChangePassword($"Tango_{env.ToUpper()}", email, password); } } else { foreach (var env in Enum.GetValues(typeof(DeploymentSlot)).Cast()) { ChangePassword($"Tango_{env.ToString()}", email, password); } } Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Done!"); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(); Console.WriteLine(ex.ToString()); } Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Continue? :"); var key = Console.ReadKey(); if (key.Key == ConsoleKey.Y) { Console.WriteLine(); Main(null); } } private static void ChangePassword(String catalog, String email, String password) { if (catalog == "Tango_PROD") { catalog = "Tango"; } Console.WriteLine($"Changing password on '{catalog}' for '{email}' to '{password}'..."); dataSource.Catalog = catalog; using (ObservablesContext db = ObservablesContext.CreateDefault(dataSource)) { var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == email.ToLower()); if (user == null) { throw new KeyNotFoundException($"User {email} not found."); } Core.Cryptography.IHashGenerator gen = new Core.Cryptography.BasicHashGenerator(); user.Password = gen.Encrypt(password); db.SaveChanges(); } } } }