1
0
mirror of https://github.com/bitwarden/mobile synced 2025-12-25 04:33:36 +00:00
Files
mobile/src/Core/Models/Domain/Organization.cs
Jake Fink 13869b5a1b [KeyConnector] Add support for key connector OTP (#1633)
* initial commit
- add UsesKeyConnector to UserService
- add models
- begin work on authentication

* finish auth workflow for key connector sso login
- finish api call for get user key
- start api calls for posts to key connector

* Bypass lock page if already unlocked

* Move logic to KeyConnectorService, log out if no pin or biometric is set

* Disable password reprompt when using key connector

* hide password reprompt checkbox when editing or adding cipher

* add PostUserKey and PostSetKeyConnector calls

* add ConvertMasterPasswordPage

* add functionality to RemoveMasterPasswordPage
- rename Convert to Remove

* Hide Change Master Password button if using key connector

* Add OTP verification for export component

* Update src/App/Pages/Vault/AddEditPage.xaml.cs

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>

* remove toolbar item "close"

* Update src/Core/Models/Request/KeyConnectorUserKeyRequest.cs

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>

* remove new line in resource string
- format warning as two labels
- set label in code behind for loading simultaneously

* implement GetAndSetKey in KeyConnectorService
- ignore EnvironmentService call

* remove unnecesary orgIdentifier

* move RemoveMasterPasswordPage call to LockPage

* add spacing to export vault page

* log out if no PIN or bio on lock page with key connector

* Delete excessive whitespace

* Delete excessive whitespace

* Change capitalisation of OTP

* add default value to models for backwards compatibility

* remove this keyword

* actually handle exceptions

* move RemoveMasterPasswordPage to TabPage using messaging service

* add minor improvements

* remove 'this.'

Co-authored-by: Hinton <oscar@oscarhinton.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
2021-11-10 20:46:48 -05:00

104 lines
4.1 KiB
C#

using System.Data.Common;
using Bit.Core.Enums;
using Bit.Core.Models.Data;
namespace Bit.Core.Models.Domain
{
public class Organization
{
public Organization() { }
public Organization(OrganizationData obj)
{
Id = obj.Id;
Name = obj.Name;
Status = obj.Status;
Type = obj.Type;
Enabled = obj.Enabled;
UseGroups = obj.UseGroups;
UseDirectory = obj.UseDirectory;
UseEvents = obj.UseEvents;
UseTotp = obj.UseTotp;
Use2fa = obj.Use2fa;
UseApi = obj.UseApi;
UsePolicies = obj.UsePolicies;
SelfHost = obj.SelfHost;
UsersGetPremium = obj.UsersGetPremium;
Seats = obj.Seats;
MaxCollections = obj.MaxCollections;
MaxStorageGb = obj.MaxStorageGb;
Permissions = obj.Permissions ?? new Permissions();
Identifier = obj.Identifier;
UsesKeyConnector = obj.UsesKeyConnector;
KeyConnectorUrl = obj.KeyConnectorUrl;
}
public string Id { get; set; }
public string Name { get; set; }
public OrganizationUserStatusType Status { get; set; }
public OrganizationUserType Type { get; set; }
public bool Enabled { get; set; }
public bool UseGroups { get; set; }
public bool UseDirectory { get; set; }
public bool UseEvents { get; set; }
public bool UseTotp { get; set; }
public bool Use2fa { get; set; }
public bool UseApi { get; set; }
public bool UsePolicies { get; set; }
public bool SelfHost { get; set; }
public bool UsersGetPremium { get; set; }
public int? Seats { get; set; }
public short? MaxCollections { get; set; }
public short? MaxStorageGb { get; set; }
public Permissions Permissions { get; set; } = new Permissions();
public string Identifier { get; set; }
public bool UsesKeyConnector { get; set; }
public string KeyConnectorUrl { get; set; }
public bool CanAccess
{
get
{
if (Type == OrganizationUserType.Owner)
{
return true;
}
return Enabled && Status == OrganizationUserStatusType.Confirmed;
}
}
public bool IsManager
{
get
{
switch (Type)
{
case OrganizationUserType.Owner:
case OrganizationUserType.Admin:
case OrganizationUserType.Manager:
return true;
default:
return false;
}
}
}
public bool IsAdmin => Type == OrganizationUserType.Owner || Type == OrganizationUserType.Admin;
public bool IsOwner => Type == OrganizationUserType.Owner;
public bool IsCustom => Type == OrganizationUserType.Custom;
public bool canAccessBusinessPortl => IsAdmin || Permissions.AccessBusinessPortal;
public bool canAccessEventLogs => IsAdmin || Permissions.AccessEventLogs;
public bool canAccessImportExport => IsAdmin || Permissions.AccessImportExport;
public bool canAccessReports => IsAdmin || Permissions.AccessReports;
public bool canCreateNewCollections => IsAdmin || Permissions.CreateNewCollections;
public bool canEditAnyCollection => IsAdmin || Permissions.EditAnyCollection;
public bool canDeleteAnyCollection => IsAdmin || Permissions.DeleteAnyCollection;
public bool canEditAssignedCollections => IsManager || Permissions.EditAssignedCollections;
public bool canDeleteAssignedCollections => IsManager || Permissions.DeleteAssignedCollections;
public bool canManageGroups => IsAdmin || Permissions.ManageGroups;
public bool canManagePolicies => IsAdmin || Permissions.ManagePolicies;
public bool canManageUser => IsAdmin || Permissions.ManageUsers;
public bool isExemptFromPolicies => canManagePolicies;
}
}