private void UpdateDatabase() { using (var ctx = new BonoboGitServerContext()) { DoUpdate(ctx); } }
public AddGuidColumn(BonoboGitServerContext context) { AuthProvider = DependencyResolver.Current.GetService<IAuthenticationProvider>(); _db = context.Database; if (UpgradeHasAlreadyBeenRun()) { return; } using (var trans = context.Database.BeginTransaction()) { try { RenameTables(); CreateTables(); CopyData(); AddRelations(); DropRenamedTables(); trans.Commit(); } catch (Exception) { trans.Rollback(); throw; } } }
public bool CreateUser(string username, string password, string name, string surname, string email) { if (String.IsNullOrEmpty(username)) throw new ArgumentException("Value cannot be null or empty.", "userName"); if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password"); if (String.IsNullOrEmpty(name)) throw new ArgumentException("Value cannot be null or empty.", "name"); if (String.IsNullOrEmpty(surname)) throw new ArgumentException("Value cannot be null or empty.", "surname"); if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email"); using (var database = new BonoboGitServerContext()) { var user = new User { Username = username, Password = EncryptPassword(password), Name = name, Surname = surname, Email = email, }; database.Users.Add(user); try { database.SaveChanges(); } catch (UpdateException) { return false; } } return true; }
public bool Create(TeamModel model) { if (model == null) throw new ArgumentException("team"); if (model.Name == null) throw new ArgumentException("name"); using (var database = new BonoboGitServerContext()) { var team = new Team { Name = model.Name, Description = model.Description }; database.Teams.Add(team); if (model.Members != null) { AddMembers(model.Members, team, database); } try { database.SaveChanges(); } catch (UpdateException) { return false; } } return true; }
public bool Create(RepositoryModel model) { if (model == null) throw new ArgumentException("model"); if (model.Name == null) throw new ArgumentException("name"); using (var database = new BonoboGitServerContext()) { var repository = new Repository { Name = model.Name, Description = model.Description, Anonymous = model.AnonymousAccess, }; database.Repositories.Add(repository); AddMembers(model.Users, model.Administrators, model.Teams, repository, database); try { database.SaveChanges(); } catch (UpdateException) { return false; } } return true; }
public void CodeAction(BonoboGitServerContext context) { _db = context.Database; if (UpgradeHasAlreadyBeenRun()) { return; } using (var trans = context.Database.BeginTransaction()) { try { RenameTables(); CreateTables(); CopyData(); AddRelations(); DropRenamedTables(); trans.Commit(); } catch (Exception) { trans.Rollback(); throw; } } }
private void UpdateDatabase() { using (var ctx = new BonoboGitServerContext()) { IObjectContextAdapter ctxAdapter = ctx; foreach (var item in UpdateScriptRepository.GetScriptsBySqlProviderName(ctx.Database.Connection.GetType().Name)) { if (!string.IsNullOrEmpty(item.Precondition)) { try { var preConditionResult = ctxAdapter.ObjectContext.ExecuteStoreQuery<int>(item.Precondition).Single(); if (preConditionResult == 0) { continue; } } catch(Exception) { // consider failures in pre-conditions as an indication that // store ecommand should be executed } } ctxAdapter.ObjectContext.ExecuteStoreCommand(item.Command); } } }
public bool AllowsAnonymous(string project) { using (var database = new BonoboGitServerContext()) { var repo = database.Repositories.FirstOrDefault(i => i.Name == project); return (repo != null && repo.Anonymous); } }
public override void CreateRole(string roleName) { using (var database = new BonoboGitServerContext()) { database.Roles.Add(new Role { Name = roleName, }); } }
public IList<Models.RepositoryModel> GetAllRepositories() { using (var db = new BonoboGitServerContext()) { var result = new List<RepositoryModel>(); foreach (var item in db.Repositories) { result.Add(ConvertToModel(item)); } return result; } }
public bool IsRepositoryAdministrator(string username, string project) { using (var database = new BonoboGitServerContext()) { var user = database.Users.FirstOrDefault(i => i.Username == username); if (user != null) { if (user.Roles.FirstOrDefault(i => i.Name == Definitions.Roles.Administrator) != null || user.AdministratedRepositories.FirstOrDefault(i => i.Name == project) != null) { return true; } } } return false; }
public void Delete(string name) { if (name == null) throw new ArgumentException("name"); using (var db = new BonoboGitServerContext()) { var team = db.Teams.FirstOrDefault(i => i.Name == name); if (team != null) { team.Repositories.Clear(); team.Users.Clear(); db.Teams.Remove(team); db.SaveChanges(); } } }
public void DeleteUser(string username) { using (var database = new BonoboGitServerContext()) { var user = database.Users.FirstOrDefault(i => i.Username == username); if (user != null) { user.AdministratedRepositories.Clear(); user.Roles.Clear(); user.Repositories.Clear(); user.Teams.Clear(); database.Users.Remove(user); database.SaveChanges(); } } }
public void Delete(string name) { if (name == null) throw new ArgumentException("name"); using (var db = new BonoboGitServerContext()) { var repo = db.Repositories.FirstOrDefault(i => i.Name == name); if (repo != null) { repo.Administrators.Clear(); repo.Users.Clear(); repo.Teams.Clear(); db.Repositories.Remove(repo); db.SaveChanges(); } } }
public override string[] FindUsersInRole(string roleName, string usernameToMatch) { var result = new HashSet<string>(); using (var database = new BonoboGitServerContext()) { var matchingRoles = database.Roles.Where(i => i.Name == roleName && i.Users.Where(user => user.Username.Contains(usernameToMatch)).Count() > 0); var usernames = matchingRoles.Select(i => i.Users.Select(u => u.Username)); foreach (var roleUsernames in usernames) { foreach (var username in roleUsernames) { result.Add(username); } } } return result.ToArray(); }
private void DoUpdate(BonoboGitServerContext ctx) { IObjectContextAdapter ctxAdapter = ctx; var connectiontype = ctx.Database.Connection.GetType().Name; foreach (var item in UpdateScriptRepository.GetScriptsBySqlProviderName(connectiontype)) { if (!string.IsNullOrEmpty(item.Precondition)) { try { var preConditionResult = ctxAdapter.ObjectContext.ExecuteStoreQuery<int>(item.Precondition).Single(); if (preConditionResult == 0) { continue; } } catch (Exception) { // consider failures in pre-conditions as an indication that // store ecommand should be executed } } try { ctxAdapter.ObjectContext.ExecuteStoreCommand(item.Command); } catch(Exception ex) { Trace.TraceError("Exception while processing upgrade script {0}\r\n{1}", item.Command, ex); throw; } } // the current pattern does not cut it anymore for adding the guid column if (connectiontype.Equals("SQLiteConnection")) { new Sqlite.AddGuidColumn(ctx); } else { new SqlServer.AddGuidColumn(ctx); } }
public override void AddUsersToRoles(string[] usernames, string[] roleNames) { using (var database = new BonoboGitServerContext()) { var roles = database.Roles.Where(i => roleNames.Contains(i.Name)); var users = database.Users.Where(i => usernames.Contains(i.Username)); foreach (var role in roles) { foreach (var user in users) { role.Users.Add(user); } } database.SaveChanges(); } }
public IList<UserModel> GetAllUsers() { using (var db = new BonoboGitServerContext()) { var result = new List<UserModel>(); foreach (var item in db.Users) { result.Add(new UserModel { Username = item.Username, Name = item.Name, Surname = item.Surname, Email = item.Email, Roles = item.Roles.Select(i => i.Name).ToArray(), }); } return result; } }
public bool HasPermission(string username, string project) { using (var database = new BonoboGitServerContext()) { var user = database.Users.FirstOrDefault(i => i.Username == username); var repository = database.Repositories.FirstOrDefault(i => i.Name == project); if (user != null && project != null) { if (user.Roles.FirstOrDefault(i => i.Name == Definitions.Roles.Administrator) != null || user.Repositories.FirstOrDefault(i => i.Name == project) != null || user.AdministratedRepositories.FirstOrDefault(i => i.Name == project) != null || user.Teams.Select(i => i.Name).FirstOrDefault(t => repository.Teams.Select(i => i.Name).Contains(t)) != null) { return true; } } } return false; }
public IList<TeamModel> GetAllTeams() { using (var db = new BonoboGitServerContext()) { var result = new List<TeamModel>(); foreach (var item in db.Teams) { result.Add(new TeamModel { Name = item.Name, Description = item.Description, Members = item.Users.Select(i => i.Username).ToArray(), Repositories = item.Repositories.Select(m => m.Name).ToArray(), }); } return result; } }
private void UpdateDatabase() { using (var ctx = new BonoboGitServerContext()) { IObjectContextAdapter ctxAdapter = ctx; foreach (var item in UpdateScriptRepository.GetScriptsBySqlProviderName(ctx.Database.Connection.GetType().Name)) { if (!string.IsNullOrEmpty(item.Precondition)) { var preConditionResult = ctxAdapter.ObjectContext.ExecuteStoreQuery<int>(item.Precondition).Single(); if (preConditionResult == 0) { continue; } } ctxAdapter.ObjectContext.ExecuteStoreCommand(item.Command); } } }
private void DoUpdate(BonoboGitServerContext ctx) { IObjectContextAdapter ctxAdapter = ctx; var connectiontype = ctx.Database.Connection.GetType().Name; foreach (var item in UpdateScriptRepository.GetScriptsBySqlProviderName(connectiontype)) { if (!string.IsNullOrEmpty(item.Precondition)) { try { var preConditionResult = ctxAdapter.ObjectContext.ExecuteStoreQuery<int>(item.Precondition).Single(); if (preConditionResult == 0) { continue; } } catch (Exception) { // consider failures in pre-conditions as an indication that // store ecommand should be executed } } if (!string.IsNullOrEmpty(item.Command)) { try { ctxAdapter.ObjectContext.ExecuteStoreCommand(item.Command); } catch (Exception ex) { Trace.TraceError("Exception while processing upgrade script {0}\r\n{1}", item.Command, ex); throw; } } item.CodeAction(ctx); } }
public override bool DeleteRole(string roleName, bool throwOnPopulatedRole) { using (var database = new BonoboGitServerContext()) { var role = database.Roles.FirstOrDefault(i => i.Name == roleName); if (role != null) { if (throwOnPopulatedRole) { if (role.Users.Count > 0) { throw new InvalidOperationException("Can't delete role with members."); } } database.Roles.Remove(role); database.SaveChanges(); return true; } return false; } }
private void UpdateDatabase() { using (var ctx = new BonoboGitServerContext()) using (var connection = ctx.Database.Connection) using (var command = connection.CreateCommand()) { connection.Open(); foreach (var item in new UpdateScriptRepository().Scripts) { if (!String.IsNullOrEmpty(item.Precondition)) { command.CommandText = item.Precondition; if (Convert.ToInt32(command.ExecuteScalar()) == 0) { continue; } } command.CommandText = item.Command; command.ExecuteNonQuery(); } } }
public void RunWithContext(BonoboGitServerContext context, IAuthenticationProvider authenticationProvider) { DoUpdate(context, authenticationProvider); }
public void RunWithContext(BonoboGitServerContext context) { DoUpdate(context); }
public override string[] GetAllRoles() { using (var database = new BonoboGitServerContext()) { return database.Roles.Select(i => i.Name).ToArray(); } }
public BonoboGitServerContext GetContext() { return(BonoboGitServerContext.FromDatabase(_connection)); }
public void CodeAction(BonoboGitServerContext context) { }
public override bool RoleExists(string roleName) { using (var database = new BonoboGitServerContext()) { return database.Roles.FirstOrDefault(i => i.Name == roleName) != null; } }
public override bool IsUserInRole(string username, string roleName) { using (var database = new BonoboGitServerContext()) { var role = database.Roles.FirstOrDefault(i => i.Name == roleName); return (role != null) ? role.Users.Where(i => i.Username == username).Count() > 0 : false; } }
public override string[] GetUsersInRole(string roleName) { using (var database = new BonoboGitServerContext()) { var role = database.Roles.FirstOrDefault(i => i.Name == roleName); return (role != null) ? role.Users.Select(i => i.Username).ToArray() : null; } }
public override string[] GetRolesForUser(string username) { using (var database = new BonoboGitServerContext()) { var user = database.Users.FirstOrDefault(i => i.Username == username); return (user != null) ? user.Roles.Select(i => i.Name).ToArray() : null; } }