renamed user2folder and user2installation, reimplemented getbyId

This commit is contained in:
Kim 2023-03-16 11:16:23 +01:00
parent 787b02f97e
commit 0f7daea8ea
7 changed files with 64 additions and 63 deletions

View File

@ -46,58 +46,58 @@ public class Controller
} }
// [Returns<User>] [Returns<User>]
// [Returns(HttpStatusCode.Unauthorized)] [Returns(Unauthorized)]
// [HttpGet($"{nameof(GetUserById)}")] [HttpGet($"{nameof(GetUserById)}")]
// public Object GetUserById(Int64 id) public Object GetUserById(Int64 id)
// { {
// var caller = GetCaller(); var caller = GetSession()?.User;
// if (caller is null) if (caller == null)
// return new HttpResponseMessage(HttpStatusCode.Unauthorized); return _Unauthorized;
//
// var user = Db.GetUserById(id); var user = Db.GetUserById(id);
//
// if (user is null || !caller.HasAccessTo(user)) if (user is null || !caller.HasAccessTo(user))
// return new HttpResponseMessage(HttpStatusCode.Unauthorized); return _Unauthorized;
//
// return user; return user;
// } }
//
// [Returns<Installation>]
// [Returns(HttpStatusCode.Unauthorized)]
// [HttpGet($"{nameof(GetInstallationById)}")]
// public Object GetInstallationById(Int64 id)
// {
// var caller = GetCaller();
// if (caller == null)
// return new HttpResponseMessage(HttpStatusCode.Unauthorized);
//
// var installation = Db.GetInstallationById(id);
//
// if (installation is null || !caller.HasAccessTo(installation))
// return new HttpResponseMessage(HttpStatusCode.Unauthorized);
//
// return installation;
// }
// [Returns<Folder>] [Returns<Installation>]
// [Returns(HttpStatusCode.Unauthorized)] [Returns(Unauthorized)]
// [HttpGet($"{nameof(GetFolderById)}")] [HttpGet($"{nameof(GetInstallationById)}")]
// public Object GetFolderById(Int64 id) public Object GetInstallationById(Int64 id)
// { {
// var caller = GetCaller(); var user = GetSession()?.User;
// if (caller == null) if (user == null)
// return new HttpResponseMessage(HttpStatusCode.Unauthorized); return _Unauthorized;
//
// var folder = Db.GetFolderById(id); var installation = Db.GetInstallationById(id);
//
// if (folder is null || !caller.HasAccessTo(folder)) if (installation is null || !user.HasAccessTo(installation))
// return new HttpResponseMessage(HttpStatusCode.Unauthorized); return _Unauthorized;
//
// return folder; return installation;
// } }
[Returns<Folder>]
[Returns(Unauthorized)]
[HttpGet($"{nameof(GetFolderById)}")]
public Object GetFolderById(Int64 id)
{
var user = GetSession()?.User;
if (user == null)
return _Unauthorized;
var folder = Db.GetFolderById(id);
if (folder is null || !user.HasAccessTo(folder))
return _Unauthorized;
return folder;
}
[Returns<Installation[]>] // assuming swagger knows about arrays but not lists (JSON) [Returns<Installation[]>] // assuming swagger knows about arrays but not lists (JSON)

View File

@ -16,10 +16,11 @@ public static class InstallationMethods
{ {
//secret 55MAqyO_FqUmh7O64VIO0egq50ERn_WIAWuc2QC44QU //secret 55MAqyO_FqUmh7O64VIO0egq50ERn_WIAWuc2QC44QU
const String apiKey = "EXO44d2979c8e570eae81ead564"; const String apiKey = "EXO44d2979c8e570eae81ead564";
const String salt = "3e5b3069-214a-43ee-8d85-57d72000c19d";
var cmd = Cli var cmd = Cli
.Wrap("s3cmd") .Wrap("s3cmd")
.WithArguments(new[] { "signurl",$"s3://{installation.Name.Replace(" ", "-")}", validity.TotalSeconds.ToString(), "--access_key", apiKey}); .WithArguments(new[] { "signurl",$"s3://{installation.Id}-{salt}", validity.TotalSeconds.ToString(), "--access_key", apiKey});
var x = await cmd.ExecuteBufferedAsync(); var x = await cmd.ExecuteBufferedAsync();
installation.S3Url = x.StandardOutput.Replace("\n", "").Replace(" ", ""); installation.S3Url = x.StandardOutput.Replace("\n", "").Replace(" ", "");

View File

@ -45,7 +45,7 @@ public static class UserMethods
public static IEnumerable<Installation> DirectlyAccessibleInstallations(this User user) public static IEnumerable<Installation> DirectlyAccessibleInstallations(this User user)
{ {
return Db return Db
.User2Installation .InstallationAccess
.Where(r => r.UserId == user.Id) .Where(r => r.UserId == user.Id)
.Select(r => r.InstallationId) .Select(r => r.InstallationId)
.Select(Db.GetInstallationById) .Select(Db.GetInstallationById)
@ -56,7 +56,7 @@ public static class UserMethods
public static IEnumerable<Folder> DirectlyAccessibleFolders(this User user) public static IEnumerable<Folder> DirectlyAccessibleFolders(this User user)
{ {
return Db return Db
.User2Folder .FolderAccess
.Where(r => r.UserId == user.Id) .Where(r => r.UserId == user.Id)
.Select(r => r.FolderId) .Select(r => r.FolderId)
.Select(Db.GetFolderById) .Select(Db.GetFolderById)
@ -125,7 +125,7 @@ public static class UserMethods
public static Boolean HasDirectAccessTo(this User user, Folder folder) public static Boolean HasDirectAccessTo(this User user, Folder folder)
{ {
return Db return Db
.User2Folder .FolderAccess
.Any(r => r.FolderId == folder.Id && r.UserId == user.Id); .Any(r => r.FolderId == folder.Id && r.UserId == user.Id);
} }
@ -143,7 +143,7 @@ public static class UserMethods
public static Boolean HasDirectAccessTo(this User user, Installation installation) public static Boolean HasDirectAccessTo(this User user, Installation installation)
{ {
return Db return Db
.User2Installation .InstallationAccess
.Any(r => r.UserId == user.Id && r.InstallationId == installation.Id); .Any(r => r.UserId == user.Id && r.InstallationId == installation.Id);
} }

View File

@ -20,8 +20,8 @@ public static partial class Db
public static TableQuery<Folder> Folders => Connection.Table<Folder>(); public static TableQuery<Folder> Folders => Connection.Table<Folder>();
public static TableQuery<Installation> Installations => Connection.Table<Installation>(); public static TableQuery<Installation> Installations => Connection.Table<Installation>();
public static TableQuery<User> Users => Connection.Table<User>(); public static TableQuery<User> Users => Connection.Table<User>();
public static TableQuery<FolderAccess> User2Folder => Connection.Table<FolderAccess>(); public static TableQuery<FolderAccess> FolderAccess => Connection.Table<FolderAccess>();
public static TableQuery<InstallationAccess> User2Installation => Connection.Table<InstallationAccess>(); public static TableQuery<InstallationAccess> InstallationAccess => Connection.Table<InstallationAccess>();
static Db() static Db()

View File

@ -21,7 +21,7 @@ public static partial class Db
Boolean DeleteDescendantFolderAndItsDependencies(Folder f) Boolean DeleteDescendantFolderAndItsDependencies(Folder f)
{ {
User2Folder .Delete(r => r.FolderId == f.Id); FolderAccess .Delete(r => r.FolderId == f.Id);
Installations.Delete(r => r.ParentId == f.Id); Installations.Delete(r => r.ParentId == f.Id);
return Folders.Delete(r => r.Id == f.Id) > 0; return Folders.Delete(r => r.Id == f.Id) > 0;
@ -34,7 +34,7 @@ public static partial class Db
Boolean DeleteInstallationAndItsDependencies() Boolean DeleteInstallationAndItsDependencies()
{ {
User2Installation.Delete(i => i.InstallationId == installation.Id); InstallationAccess.Delete(i => i.InstallationId == installation.Id);
return Installations.Delete(i => i.Id == installation.Id) > 0; return Installations.Delete(i => i.Id == installation.Id) > 0;
} }
} }
@ -45,8 +45,8 @@ public static partial class Db
Boolean DeleteUserAndHisDependencies() Boolean DeleteUserAndHisDependencies()
{ {
User2Folder .Delete(u => u.UserId == user.Id); FolderAccess .Delete(u => u.UserId == user.Id);
User2Installation.Delete(u => u.UserId == user.Id); InstallationAccess.Delete(u => u.UserId == user.Id);
return Users.Delete(u => u.Id == user.Id) > 0; return Users.Delete(u => u.Id == user.Id) > 0;
} }

View File

@ -61,7 +61,7 @@ public static partial class Db
private static void GiveFakeUsersAccessToFolders() private static void GiveFakeUsersAccessToFolders()
{ {
foreach (var uf in User2Folder) // remove existing relations foreach (var uf in FolderAccess) // remove existing relations
Connection.Delete(uf); Connection.Delete(uf);
var nFolders = Folders.Count(); var nFolders = Folders.Count();
@ -81,7 +81,7 @@ public static partial class Db
private static void GiveFakeUsersAccessToInstallations() private static void GiveFakeUsersAccessToInstallations()
{ {
foreach (var ui in User2Installation) // remove existing relations foreach (var ui in InstallationAccess) // remove existing relations
Connection.Delete(ui); Connection.Delete(ui);
var nbInstallations = Installations.Count(); var nbInstallations = Installations.Count();

Binary file not shown.