示例#1
0
        //[Authenticate(Forms, "/login/")] // Basic, Digest, Oauth, Api
        public override ViewBase Post(ControllerContext context)
        {
            User user;
            if (!UserService.TryAuthenticateUser(context.User, out user))
            {
                return new StatusCodeView(HttpStatusCode.BadGateway); // TODO: return a better error code that doesn't cause forms authentication to overwrite our response
            }
            else if (!UserService.TryAuthorizeUser(user, UserRole.Admin))
            {
                return new StatusCodeView(HttpStatusCode.Forbidden);
            }

            var config = new Config();
            var updates = config.PopulateWithData(context.Form);

            using (var db = DataService.Connect())
            using (var tx = db.OpenTransaction())
            {
                db.Insert(config);

                ConfigService.InitializeWithConfig(config);
                FileService.PregenerateApp();

                tx.Commit();
            }

            return new JsonView(new AppViewModel());
        }
示例#2
0
        public static void Initialize(bool overwrite = false)
        {
            #if DEBUG
            overwrite = true;
            #endif

            using (IDbConnection db = Connect())
            {
                //bool userTableExists = db.TableExists("User");
                bool fullTextSearchExists = db.TableExists("FullTextSearchIssue");
                if (overwrite && fullTextSearchExists)
                {
                    db.ExecuteSql("DROP TABLE FullTextSearchIssue");
                    fullTextSearchExists = false;
                }

                db.CreateTables(overwrite, typeof(User), typeof(Config), typeof(Issue), typeof(IssueComment));
                if (!fullTextSearchExists)
                {
                    db.ExecuteSql("CREATE VIRTUAL TABLE FullTextSearchIssue USING fts4(Title, Text, Comments)");
                }

            #if DEBUG
                Config config = new Config()
                {
                    Areas = new[] { "candle.exe", "light.exe" },
                    Releases = new[] { "v3.7", "v3.8", "v3.x", "v4.x" },
                };
                db.Insert(config);

                var fooUser = UserService.Create("*****@*****.**", "bar.");
                fooUser.FullName = "Foo User";
                fooUser.Role = UserRole.Admin;
                db.Insert(fooUser);
                fooUser.Id = db.GetLastInsertId();

                var barUser = UserService.Create("*****@*****.**", "foo");
                barUser.UserName = "******";
                barUser.FullName = "Bar User";
                db.Insert(barUser);
                barUser.Id = db.GetLastInsertId();

                var bazUser = UserService.Create("*****@*****.**", "foo");
                bazUser.UserName = "******";
                bazUser.FullName = "Baz User";
                bazUser.Role = UserRole.User;
                db.Insert(bazUser);
                bazUser.Id = db.GetLastInsertId();

                var issue = new Issue()
                {
                    AssignedToUserId = fooUser.Id,
                    CreatedByUserId = barUser.Id,
                    CreatedAt = DateTime.UtcNow,
                    Title = "This is the title.",
                    Type = IssueType.Bug,
                    Release = "v3.8",
                    Text = "This is the text of the bug. It is a little longer than the title.",
                    Votes = 4,
                };
                db.Insert(issue);
                issue.Id = db.GetLastInsertId();

                var issueSearch = new FullTextSearchIssue()
                {
                    DocId = issue.Id,
                    Text = issue.Text,
                    Title = issue.Title,
                };
                //db.SqlScalar<int>("INSERT INTO issue_text(docid, title, text) VALUES(@i, @t, @c)",
                //              new { i = db.GetLastInsertId(), t = issue.Title, c = issue.Text });
                db.Insert(issueSearch);

                var issueOld = new Issue()
                {
                    CreatedByUserId = fooUser.Id,
                    CreatedAt = DateTime.UtcNow,
                    Title = "This is the title of old feature.",
                    Type = IssueType.Feature,
                    Release = "v3.7",
                    Text = "This is the text of the feature. It is a little longer than the title and it's for older stuff.",
                    Votes = 1,
                };
                db.Insert(issueOld);
                issueOld.Id = db.GetLastInsertId();

                var issueOldComment = new IssueComment()
                {
                    IssueId = issueOld.Id,
                    CommentByUserId = barUser.Id,
                    CreatedAt = DateTime.UtcNow,
                    Text = "This is the text of the comment. It is a little longer to provide some detail about the feature request.",
                };
                db.Insert(issueOldComment);
                issueOldComment.Id = db.GetLastInsertId();

                var issueOldSearch = new FullTextSearchIssue()
                {
                    DocId = issueOldComment.IssueId,
                    Text = issueOld.Text,
                    Title = issueOld.Title,
                    Comments = issueOldComment.Text,
                };
                //db.SqlScalar<int>("INSERT INTO issue_text(docid, title, text) VALUES(@i, @t, @c)",
                //              new { i = db.GetLastInsertId(), t = issue.Title, c = issue.Text });
                db.Insert(issueOldSearch);
            #endif
            }
        }
示例#3
0
        public static void InitializeWithConfig(Config config)
        {
            if (config == null)
            {
                NoConfig = true;
            }
            else
            {
                AppName = config.ApplicationName;
                AppSubName = config.ApplicationSubName;
                areas = config.Areas;
                releases = config.Releases;
                breadcrumbs = config.ExternalBreadcrumbs;
                Mail = new MailConfig()
                {
                    From = config.MailFrom ?? config.MailUsername,
                    Server = config.MailServer,
                    Port = config.MailPort,
                    RequireSsl = config.MailSsl,
                    Username = config.MailUsername,
                    Password = config.MailPassword,
                };
            }

            if (String.IsNullOrEmpty(AppName))
            {
                AppName = WebConfigurationManager.AppSettings["app.name"] ?? "tinyBugs";
                AppSubName = WebConfigurationManager.AppSettings["app.subname"] ?? "no issue is too small";
            }
        }
示例#4
0
        public static void InitializeWithConfig(Config config)
        {
            if (config == null)
            {
                NoConfig = true;
            }
            else
            {
                AppName = config.ApplicationName;
                AppSubName = config.ApplicationSubName;
                areas = config.Areas;
                releases = config.Releases;
                breadcrumbs = config.ExternalBreadcrumbs;

                // If the mail server was not configured by the web.config, populate the mail
                // configuration from the provided config information.
                if (String.IsNullOrEmpty(Mail.Server))
                {
                    Mail = new MailConfig()
                    {
                        From = config.MailFrom ?? config.MailUsername,
                        Server = config.MailServer,
                        Port = config.MailPort,
                        RequireSsl = config.MailSsl,
                        Username = config.MailUsername,
                        Password = config.MailPassword,
                    };
                }
            }

            if (String.IsNullOrEmpty(AppName))
            {
                AppName = WebConfigurationManager.AppSettings["app.name"] ?? "tinyBugs";
                AppSubName = WebConfigurationManager.AppSettings["app.subname"] ?? "no issue is too small";
            }
        }