1
0
mirror of https://github.com/bitwarden/server.git synced 2024-11-23 12:25:16 +01:00

stub out fields and secure note models

This commit is contained in:
Kyle Spearrin 2017-09-13 16:54:23 -04:00
parent d2405bc1cc
commit 27216efd1f
9 changed files with 102 additions and 38 deletions

View File

@ -4,6 +4,7 @@
{
// Folder is deprecated
Folder = 0,
Login = 1
Login = 1,
SecureNote = 2
}
}

View File

@ -0,0 +1,9 @@
namespace Bit.Core.Enums
{
public enum FieldType : byte
{
Text = 0,
Password = 1,
Boolean = 2
}
}

View File

@ -0,0 +1,7 @@
namespace Bit.Core.Enums
{
public enum SecureNoteType : byte
{
Generic = 0
}
}

View File

@ -0,0 +1,11 @@
using System.Collections.Generic;
namespace Bit.Core.Models.Api
{
public abstract class CipherDataModel
{
public string Name { get; set; }
public string Notes { get; set; }
public IEnumerable<FieldDataModel> Fields { get; set; }
}
}

View File

@ -0,0 +1,14 @@
using System.ComponentModel.DataAnnotations;
using Bit.Core.Enums;
namespace Bit.Core.Models.Api
{
public class FieldDataModel
{
public FieldType Type { get; set; }
[StringLength(1000)]
public string Name { get; set; }
[StringLength(1000)]
public string Value { get; set; }
}
}

View File

@ -4,27 +4,31 @@ using Newtonsoft.Json;
namespace Bit.Core.Models.Api
{
public class LoginDataModel
public class LoginDataModel : CipherDataModel
{
public LoginDataModel() { }
public LoginDataModel(LoginRequestModel login)
{
Name = login.Name;
Notes = login.Notes;
Fields = login.Fields;
Uri = login.Uri;
Username = login.Username;
Password = login.Password;
Notes = login.Notes;
Totp = login.Totp;
}
public LoginDataModel(CipherRequestModel cipher)
{
Name = cipher.Name;
Notes = cipher.Notes;
Fields = cipher.Fields;
Uri = cipher.Uri;
Username = cipher.Username;
Password = cipher.Password;
Notes = cipher.Notes;
Totp = cipher.Totp;
}
@ -38,18 +42,18 @@ namespace Bit.Core.Models.Api
var data = JsonConvert.DeserializeObject<LoginDataModel>(cipher.Data);
Name = data.Name;
Notes = data.Notes;
Fields = data.Fields;
Uri = data.Uri;
Username = data.Username;
Password = data.Password;
Notes = data.Notes;
Totp = data.Totp;
}
public string Name { get; set; }
public string Uri { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string Notes { get; set; }
public string Totp { get; set; }
}
}

View File

@ -37,16 +37,8 @@ namespace Bit.Core.Models.Api
[EncryptedString]
[StringLength(1000)]
public string Totp { get; set; }
public virtual Cipher ToCipher(Guid userId)
{
return ToCipher(new Cipher
{
Id = new Guid(Id),
UserId = string.IsNullOrWhiteSpace(OrganizationId) ? (Guid?)userId : null,
Type = Type
});
}
public IEnumerable<FieldDataModel> Fields { get; set; }
public Dictionary<string, string> Attachments { get; set; }
public virtual Cipher ToCipher(Cipher existingCipher)
{
@ -60,29 +52,23 @@ namespace Bit.Core.Models.Api
throw new ArgumentException("Unsupported " + nameof(Type) + ".");
}
return existingCipher;
}
}
public class CipherAttachmentRequestModel : CipherRequestModel
{
public Dictionary<string, string> Attachments { get; set; }
public override Cipher ToCipher(Cipher existingCipher)
{
base.ToCipher(existingCipher);
var attachments = existingCipher.GetAttachments();
if((Attachments?.Count ?? 0) > 0 && (attachments?.Count ?? 0) > 0)
if((Attachments?.Count ?? 0) == 0)
{
foreach(var attachment in existingCipher.GetAttachments().Where(a => Attachments.ContainsKey(a.Key)))
{
attachment.Value.FileName = Attachments[attachment.Key];
}
existingCipher.SetAttachments(attachments);
return existingCipher;
}
var attachments = existingCipher.GetAttachments();
if((attachments?.Count ?? 0) == 0)
{
return existingCipher;
}
foreach(var attachment in attachments.Where(a => Attachments.ContainsKey(a.Key)))
{
attachment.Value.FileName = Attachments[attachment.Key];
}
existingCipher.SetAttachments(attachments);
return existingCipher;
}
}
@ -92,7 +78,7 @@ namespace Bit.Core.Models.Api
[Required]
public IEnumerable<string> CollectionIds { get; set; }
[Required]
public CipherAttachmentRequestModel Cipher { get; set; }
public CipherRequestModel Cipher { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{

View File

@ -4,6 +4,7 @@ using Bit.Core.Utilities;
using Newtonsoft.Json;
using Core.Models.Data;
using Bit.Core.Models.Table;
using System.Collections.Generic;
namespace Bit.Core.Models.Api
{
@ -33,6 +34,7 @@ namespace Bit.Core.Models.Api
[EncryptedString]
[StringLength(1000)]
public string Totp { get; set; }
public IEnumerable<FieldDataModel> Fields { get; set; }
public CipherDetails ToCipherDetails(Guid userId)
{

View File

@ -0,0 +1,30 @@
using System;
using Bit.Core.Enums;
using Bit.Core.Models.Table;
using Newtonsoft.Json;
namespace Bit.Core.Models.Api
{
public class SecureNoteDataModel : CipherDataModel
{
public SecureNoteDataModel() { }
public SecureNoteDataModel(Cipher cipher)
{
if(cipher.Type != CipherType.SecureNote)
{
throw new ArgumentException("Cipher is not correct type.");
}
var data = JsonConvert.DeserializeObject<SecureNoteDataModel>(cipher.Data);
Name = data.Name;
Notes = data.Notes;
Fields = data.Fields;
Type = data.Type;
}
public SecureNoteType Type { get; set; }
}
}