private static async Task InitliazeDb() { using (var context = new BakaContext()) { await context.Database.EnsureCreatedAsync(); var root_user = await context.Users.FirstOrDefaultAsync(x => x.Token == Config.RootToken); if (root_user != null) { Console.WriteLine("Root user already exists!\n" + JsonConvert.SerializeObject(root_user)); return; } root_user = new BakaUser() { Name = "ROOT_USER", Username = "******", InitialIp = "ROOT_USER", UploadLimitMB = 500, Deleted = false, Disabled = false, Timestamp = DateTime.Now, Email = "ROOT_USER_DO_NOT_USE_FOR_UPLOADING_OBJECTS", Token = Config.RootToken, AccountType = "su_full" }; await context.Users.AddAsync(root_user); await context.SaveChangesAsync(); Console.WriteLine("Created root user!\n" + JsonConvert.SerializeObject(root_user)); } }
public async Task <IActionResult> GetUserInfo(string token) { try { AuthModel model = Authorize("su_full"); if (!model.Authorized) { Response.StatusCode = 401; return(Json(new { success = false, error = model.Reason, code = 401 })); } using (var context = new BakaContext()) { BakaUser return_usr = await context.Users.FirstOrDefaultAsync(x => x.Token == token); if (return_usr == null) { return(NotFound(new { success = false, error = "404 Not Found", code = 404 })); } return(Json(new { id = return_usr.Id, username = return_usr.Username, name = return_usr.Name, email = return_usr.Email, upload_limit = return_usr.UploadLimitMB, initial_ip = return_usr.InitialIp, timestamp = return_usr.Timestamp.ToFileTimeUtc().ToString(), token = return_usr.Token, deleted = return_usr.Deleted, disabled = return_usr.Disabled, account_type = return_usr.AccountType, links = return_usr.Links, files = return_usr.Files, })); } } catch { Response.StatusCode = 500; return(Json(new { success = false, error = "500 Internal Server Error", code = 500 })); } }
public async Task <IActionResult> DeleteUser(string token) { try { AuthModel model = Authorize("su_full"); if (!model.Authorized) { Response.StatusCode = 401; return(Json(new { success = false, error = model.Reason, code = 401 })); } using (var context = new BakaContext()) { BakaUser return_usr = await context.Users.FirstOrDefaultAsync(x => x.Token == token); if (return_usr == null) { return(NotFound(new { success = false, error = "404 Not Found", code = 404 })); } if (!Globals.Config.PreserveDeletedFiles) { context.Users.Remove(return_usr); } else { return_usr.Deleted = true; } await context.SaveChangesAsync(); return(Json(new { success = true, code = 200, deleted = true })); } } catch { Response.StatusCode = 500; return(Json(new { success = false, error = "500 Internal Server Error", code = 500 })); } }
public async Task <IActionResult> ResetUserToken(string token) { try { AuthModel model = Authorize("su_full"); if (!model.Authorized) { Response.StatusCode = 401; return(Json(new { success = false, error = model.Reason, code = 401 })); } using (var context = new BakaContext()) { BakaUser return_usr = await context.Users.FirstOrDefaultAsync(x => x.Token == token); if (return_usr == null) { return(NotFound(new { success = false, error = "404 Not Found", code = 404 })); } return_usr.Token = Globals.GenerateToken(return_usr); await context.SaveChangesAsync(); return(Json(new { new_token = return_usr.Token })); } } catch { Response.StatusCode = 500; return(Json(new { success = false, error = "500 Internal Server Error", code = 500 })); } }
public static string GenerateToken(BakaUser user) { var payload = new { ts = DateTime.Now.ToFileTimeUtc().ToString() }; byte[] key = Encoding.UTF8.GetBytes(Config.JWTKey); string token = JWT.Encode(payload, key, JwsAlgorithm.HS256); return(token); }
public async Task <IActionResult> CreateUser([FromBody] NewUserModel details) { try { AuthModel model = Authorize("su_full"); if (!model.Authorized) { Response.StatusCode = 401; return(Json(new { success = false, error = model.Reason, code = 401 })); } BakaUser return_usr; using (var context = new BakaContext()) { var usr = new BakaUser() { Name = details.Name, Username = details.Username, Email = details.Email, InitialIp = null, Timestamp = DateTime.Now, UploadLimitMB = details.UploadLimit, Deleted = false, Disabled = false, AccountType = "su_upload" }; usr.Token = Globals.GenerateToken(usr); await context.Users.AddAsync(usr); await context.SaveChangesAsync(); return_usr = usr; } return(Json(new { id = return_usr.Id, username = return_usr.Username, name = return_usr.Name, initial_ip = return_usr.InitialIp, timestamp = return_usr.Timestamp.ToFileTimeUtc().ToString(), token = return_usr.Token, deleted = return_usr.Deleted, disabled = return_usr.Disabled, email = return_usr.Email, upload_limit = return_usr.UploadLimitMB, })); } catch (Exception e) { Response.StatusCode = 500; if (!Globals.Config.IsDebug) { return(Json(new { success = false, error = "500 Internal Server Error", code = 500 })); } return(Json(new { success = false, error = "500 Internal Server Error", code = 500, exception = e.ToString(), })); } }
public async Task <IActionResult> GetUserFromId(int id) { AuthModel model = Authorize("su_full"); if (!model.Authorized) { Response.StatusCode = 401; return(Json(new { success = false, error = model.Reason, code = 401 })); } try { using (var context = new BakaContext()) { BakaUser return_usr = await context.Users.Include(x => x.Links).Include(x => x.Files).FirstOrDefaultAsync(x => x.Id == id); if (return_usr == null) { return(NotFound(new { success = false, error = "404 Not Found", code = 404 })); } return(Json(new { id = return_usr.Id, username = return_usr.Username, name = return_usr.Name, email = return_usr.Email, upload_limit = return_usr.UploadLimitMB, initial_ip = return_usr.InitialIp, timestamp = return_usr.Timestamp.ToFileTimeUtc().ToString(), token = return_usr.Token, deleted = return_usr.Deleted, disabled = return_usr.Disabled, account_type = return_usr.AccountType, links = return_usr.Links.ToList(), files = return_usr.Files.ToList(), })); } } catch (Exception e) { Response.StatusCode = 500; if (!Globals.Config.IsDebug) { return(Json(new { success = false, error = "500 Internal Server Error", code = 500 })); } return(Json(new { success = false, error = "500 Internal Server Error", code = 500, exception = e.ToString(), })); } }