public async Task RemoveAsync(string key)
        {
            using (var ctx = new PBugContext(dbOptions))
            {
                Session s = await ctx.Sessions.FindAsync(Convert.FromBase64String(key));

                if (s != null)
                {
                    ctx.Remove(s);
                    await ctx.SaveChangesAsync();
                }
            }
        }
        public async Task <AuthenticationTicket> RetrieveAsync(string key)
        {
            using (var ctx = new PBugContext(dbOptions))
            {
                Session s = await ctx.Sessions.FindAsync(Convert.FromBase64String(key));

                if (s != null)
                {
                    return(TicketSerializer.Default.Deserialize(s.SessionData));
                }
            }
            return(null);
        }
        public async Task RenewAsync(string key, AuthenticationTicket ticket)
        {
            using (var ctx = new PBugContext(dbOptions))
            {
                Session s = await ctx.Sessions.FindAsync(Convert.FromBase64String(key));

                if (s != null)
                {
                    s.SessionData = TicketSerializer.Default.Serialize(ticket);
                    s.Expires     = ticket.Properties.ExpiresUtc.Value;
                    await ctx.SaveChangesAsync();
                }
            }
        }
        public async Task <string> StoreAsync(AuthenticationTicket ticket)
        {
            using (var ctx = new PBugContext(dbOptions))
            {
                Session s = (await ctx.AddAsync(new Session()
                {
                    Id = AuthUtils.GetRandomData(64),
                    SessionData = TicketSerializer.Default.Serialize(ticket),
                    Expires = ticket.Properties.ExpiresUtc
                })).Entity;
                await ctx.SaveChangesAsync();

                return(Convert.ToBase64String(s.Id));
            }
        }
        public static void BuildDb()
        {
            var cfg = new ConfigurationBuilder()
                      .AddJsonFile("appsettings.json")
                      .Build();

            var dbOpts = new DbContextOptionsBuilder <PBugContext>().UseMySql(cfg.GetConnectionString("Database"));

            using (var ctx = new PBugContext(dbOpts.Options))
            {
                var logger = LoggerFactory.Create(opts => opts.AddConsole()).CreateLogger("PBug");
                logger.LogInformation("Ensuring creation of DB");
                ctx.Database.EnsureCreated();
                if (!ctx.Users.Any())
                {
                    Role anonymous = new Role()
                    {
                        Name        = "Anonymous",
                        Permissions = ""
                    };

                    Role admin = new Role()
                    {
                        Name        = "Administrator",
                        Permissions = "**"
                    };

                    ctx.AddRange(anonymous, admin);


                    User system = new User()
                    {
                        Role     = admin,
                        Username = "******",
                        FullName = "PBug System"
                    };
                    string password = Convert.ToBase64String(AuthUtils.GetRandomData(64));
                    system.PasswordSalt = AuthUtils.GetRandomData(64);
                    system.PasswordHash = AuthUtils.GetHashFor(password, system.PasswordSalt);

                    ctx.Add(system);
                    ctx.SaveChanges();
                    File.WriteAllText("systempass.txt", password);
                    logger.LogInformation("Created database. System password is in systempass.txt", password);
                }
            }
        }
Exemple #6
0
 public RequestDelegate Use(RequestDelegate next)
 {
     return(async(HttpContext ctx) =>
     {
         Role role;
         using (PBugContext db = new PBugContext(dbopts))
             if (ctx.User.IsAnonymous())
             {
                 role = await db.Roles.FindAsync(1u);
             }
             else
             {
                 role = await db.Users.Where(x => x.Id == ctx.User.GetUserId()).Select(x => x.Role).FirstAsync();
             }
         ctx.Features.Set(new PermissionData()
         {
             PermissionText = role.Permissions,
             RoleName = role.Name
         });
         await next(ctx);
     });
 }
 public MainController(ILogger <MainController> logger, PBugContext db)
 {
     _logger = logger;
     Db      = db;
 }
Exemple #8
0
 public UserController(PBugContext db, ILogger <UserController> log)
 {
     Db     = db;
     logger = log;
 }
 public AdminController(PBugContext db)
 {
     Db = db;
 }
Exemple #10
0
 public FileController(PBugContext db)
 {
     this.db = db;
 }
Exemple #11
0
 public IssueController(PBugContext db)
 {
     Db = db;
 }
 public KnowledgeBaseController(PBugContext ctx)
 {
     Db = ctx;
 }