public ActionResult Create(CreateModel m) { if (ModelState.IsValid) { using (var db = new Piranha.DataContext()) { // PIRANHA USER // Login sysuser into the current context. db.LoginSys(); var user = new Piranha.Entities.User() { Login = m.Login, Email = m.Email, GroupId = GetUserGroupId() }; if (!String.IsNullOrEmpty(m.Password)) { user.Password = Piranha.Models.SysUserPassword.Encrypt(m.Password); } db.Users.Add(user); // OUR USER dynamic registration = new UserRegistration(m); registration.Register(); if (db.SaveChanges() > 0) { // Make sure that you have implemented the Hook Hooks.Mail.SendPassword if (String.IsNullOrEmpty(m.Password)) { user.GenerateAndSendPassword(db); } } else { return View("RegistrationFailed"); } } return View("Login"); } return View("RegistrationFailed"); }
public void SetupPiranha(Piranha.DataContext PDb) { if (PDb.Database.Exists()) { string db = PDb.Database.Connection.DataSource; File.Delete("./piranha.db"); } if (HttpContext.Current == null) { SimpleWorkerRequest request = new SimpleWorkerRequest("", "", "", null, new StringWriter()); HttpContext context = new HttpContext(request); HttpContext.Current = context; } // Copied and modified from Piranha.Areas.Manager.Controllers.InstallController // Read embedded create script Assembly piranhaAssembly = Assembly.GetAssembly(typeof(Piranha.Areas.Manager.Controllers.InstallController)); Stream str = piranhaAssembly.GetManifestResourceStream(Piranha.Data.Database.ScriptRoot + ".Create.sql"); String sql = new StreamReader(str).ReadToEnd(); str.Close(); // Read embedded data script str = piranhaAssembly.GetManifestResourceStream(Piranha.Data.Database.ScriptRoot + ".Data.sql"); String data = new StreamReader(str).ReadToEnd(); str.Close(); // Split statements and execute string[] stmts = sql.Split(new char[] { ';' }); using (var tx = PDb.Database.BeginTransaction()) { // Create database from script foreach (string stmt in stmts) { if (!String.IsNullOrEmpty(stmt.Trim())) { Piranha.Models.SysUser.Execute(stmt, tx.UnderlyingTransaction); } } tx.Commit(); } // Split statements and execute stmts = data.Split(new char[] { ';' }); using (var tx = PDb.Database.BeginTransaction()) { // Create user Piranha.Models.SysUser usr = new Piranha.Models.SysUser() { Login = ConfigurationManager.AppSettings["AdminLogin"], Email = ConfigurationManager.AppSettings["AdminEmail"], GroupId = new Guid("7c536b66-d292-4369-8f37-948b32229b83"), CreatedBy = new Guid("ca19d4e7-92f0-42f6-926a-68413bbdafbc"), UpdatedBy = new Guid("ca19d4e7-92f0-42f6-926a-68413bbdafbc"), Created = DateTime.Now, Updated = DateTime.Now }; usr.Save(tx.UnderlyingTransaction); // Create user password Piranha.Models.SysUserPassword pwd = new Piranha.Models.SysUserPassword() { Id = usr.Id, Password = ConfigurationManager.AppSettings["AdminPassword"], IsNew = false }; pwd.Save(tx.UnderlyingTransaction); // Create default data foreach (string stmt in stmts) { if (!String.IsNullOrEmpty(stmt.Trim())) { string statement = stmt.Replace("GETDATE()", "date('now')") .Replace("SUBSTRING", "substr") .Replace("NEWID()", string.Format("'{0}'", Guid.NewGuid().ToString())); Piranha.Models.SysUser.Execute(statement, tx.UnderlyingTransaction); } } tx.Commit(); } }