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");
        }
Exemple #2
0
        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();
            }
        }