1
0
Fork 0
mirror of https://github.com/dani-garcia/vaultwarden.git synced 2025-07-14 00:04:59 +00:00

First working version

This commit is contained in:
Daniel García 2018-02-10 01:00:55 +01:00
commit 5cd40c63ed
172 changed files with 17903 additions and 0 deletions

View file

@ -0,0 +1,135 @@
<section class="content-header">
<h1>
Apps
<small>for all of your devices</small>
</h1>
</section>
<section class="content">
<div class="box box-default box-apps">
<div class="box-header with-border">
<h3 class="box-title">Desktop/Browser</h3>
</div>
<div class="box-body">
<div class="row">
<div class="col-sm-6">
<ul class="fa-ul">
<li>
<a href="https://chrome.google.com/webstore/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb" target="_blank">
<i class="fa fa-chrome fa-lg fa-fw fa-li"></i> Google Chrome
</a>
</li>
<li>
<a href="https://addons.mozilla.org/firefox/addon/bitwarden-password-manager/" target="_blank">
<i class="fa fa-firefox fa-lg fa-fw fa-li"></i> Mozilla Firefox
</a>
</li>
<li>
<a href="https://addons.opera.com/extensions/details/bitwarden-free-password-manager/" target="_blank">
<i class="fa fa-opera fa-lg fa-fw fa-li"></i> Opera
</a>
</li>
<li>
<a href="https://www.microsoft.com/store/p/bitwarden-free-password-manager/9p6kxl0svnnl" target="_blank">
<i class="fa fa-edge fa-lg fa-fw fa-li"></i> Microsoft Edge
</a>
</li>
</ul>
</div>
<div class="col-sm-6">
Others:
<ul>
<li>
<a href="https://chrome.google.com/webstore/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb" target="_blank">
Vivaldi
</a>
</li>
<li>
<a href="https://brave.com/" target="_blank">
Brave
</a>
</li>
<li>
<a href="https://addons.mozilla.org/firefox/addon/bitwarden-password-manager/" target="_blank">
Tor Browser
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="box box-default box-apps">
<div class="box-header with-border">
<h3 class="box-title">Mobile</h3>
</div>
<div class="box-body">
<div class="row">
<div class="col-sm-6">
<ul class="fa-ul">
<li>
<a href="https://itunes.apple.com/app/bitwarden-free-password-manager/id1137397744?mt=8" target="_blank">
<i class="fa fa-apple fa-lg fa-fw fa-li"></i> iOS
</a>
</li>
<li>
<a href="https://play.google.com/store/apps/details?id=com.x8bit.bitwarden" target="_blank">
<i class="fa fa-android fa-lg fa-fw fa-li"></i> Android
</a>
</li>
</ul>
</div>
<div class="col-sm-6">
<ul class="fa-ul">
<li>
<a href="#" stop-click>
<i class="fa fa-windows fa-lg fa-fw fa-li"></i> Windows
<small class="text-muted">(coming soon)</small>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="box box-default box-apps">
<div class="box-header with-border">
<h3 class="box-title">Other</h3>
</div>
<div class="box-body">
<div class="row">
<div class="col-sm-6">
<ul class="fa-ul">
<li>
<a href="#" stop-click>
<i class="fa fa-windows fa-lg fa-fw fa-li"></i> Desktop Windows
<small class="text-muted">(coming soon)</small>
</a>
</li>
<li>
<a href="#" stop-click>
<i class="fa fa-apple fa-lg fa-fw fa-li"></i> Desktop macOS
<small class="text-muted">(coming soon)</small>
</a>
</li>
</ul>
</div>
<div class="col-sm-6">
<ul class="fa-ul">
<li>
<a href="#" stop-click>
<i class="fa fa-linux fa-lg fa-fw fa-li"></i> Desktop Linux
<small class="text-muted">(coming soon)</small>
</a>
</li>
<li>
<a href="#" stop-click>
<i class="fa fa-terminal fa-lg fa-fw fa-li"></i> CLI
<small class="text-muted">(coming soon)</small>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</section>

View file

@ -0,0 +1,10 @@
<div class="wrapper toast-target">
<div ui-view></div>
<footer class="main-footer">
<div class="pull-right hidden-xs">
<b>Version</b> {{main.version}}
</div>
<strong>Copyright &copy; <span ng-bind="currentYear"></span></strong>, 8bit Solutions LLC
</footer>
</div>

View file

@ -0,0 +1,2 @@
<div class="toast-target" ui-view>
</div>

View file

@ -0,0 +1,118 @@
<header class="main-header" ng-controller="topNavController as topNav">
<a ui-sref="backend.user.vault" class="logo">
<span class="logo-mini"><i class="fa fa-shield"></i></span>
<span class="logo-lg"><i class="fa fa-shield"></i> <b>bit</b>warden</span>
</a>
<nav class="navbar navbar-static-top" role="navigation">
<a class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<li><a ui-sref="frontend.logout">Log Out</a></li>
<li class="control-sidebar-show">
<a href="#" stop-click ng-click="toggleControlSidebar()"><i class="fa fa-bars"></i></a>
</li>
</ul>
</div>
</nav>
</header>
<aside class="main-sidebar" ng-controller="sideNavController">
<section class="sidebar">
<div class="user-panel">
<div class="pull-left image">
<letter-avatar data="{{orgProfile.name}}" avclass="img-responsive img-rounded" round="false"></letter-avatar>
</div>
<div class="pull-left info">
<p>{{orgProfile.name}}</p>
<a ui-sref="backend.user.vault"><i class="fa fa-arrow-left"></i> Return to my vault</a>
</div>
</div>
<form class="sidebar-form">
<label for="search" class="sr-only">Search</label>
<div class="form-group has-feedback">
<input type="text" id="search" class="form-control" placeholder="Search org. vault..."
ng-focus="searchOrganizationVault()" ng-model="main.searchVaultText" />
<span class="fa fa-search form-control-feedback" aria-hidden="true"></span>
</div>
</form>
<ul class="sidebar-menu">
<li class="header">MY ORGANIZATION</li>
<li ng-class="{active: $state.is('backend.org.dashboard')}">
<a ui-sref="backend.org.dashboard({orgId: params.orgId})">
<i class="fa fa-dashboard fa-fw"></i> <span>Dashboard</span>
</a>
</li>
<li ng-class="{active: $state.is('backend.org.vault')}">
<a ui-sref="backend.org.vault({orgId: params.orgId})">
<i class="fa fa-lock fa-fw"></i> <span>Vault</span>
</a>
<ul class="treeview-menu" ng-class="{'menu-open': $state.includes('backend.org.vault')}">
<li>
<a href="#" stop-click ng-click="addOrganizationCipher()">
<i class="fa fa-plus-circle fa-fw"></i> New Item
</a>
</li>
</ul>
</li>
<li ng-class="{active: $state.is('backend.org.collections')}">
<a ui-sref="backend.org.collections({orgId: params.orgId})">
<i class="fa fa-cubes fa-fw"></i> <span>Collections</span>
</a>
<ul class="treeview-menu" ng-class="{'menu-open': $state.includes('backend.org.collections')}">
<li>
<a href="#" stop-click ng-click="addOrganizationCollection()">
<i class="fa fa-plus-circle fa-fw"></i> New Collection
</a>
</li>
</ul>
</li>
<li ng-class="{active: $state.is('backend.org.people')}">
<a ui-sref="backend.org.people({orgId: params.orgId})">
<i class="fa fa-users fa-fw"></i> <span>People</span>
</a>
<ul class="treeview-menu" ng-class="{'menu-open': $state.includes('backend.org.people')}">
<li>
<a href="#" stop-click ng-click="inviteOrganizationUser()">
<i class="fa fa-plus-circle fa-fw"></i> Invite a User
</a>
</li>
</ul>
</li>
<li ng-class="{active: $state.is('backend.org.groups')}" ng-if="orgProfile.useGroups">
<a ui-sref="backend.org.groups({orgId: params.orgId})">
<i class="fa fa-sitemap fa-fw"></i> <span>Groups</span>
</a>
<ul class="treeview-menu" ng-class="{'menu-open': $state.includes('backend.org.groups')}">
<li>
<a href="#" stop-click ng-click="addOrganizationGroup()">
<i class="fa fa-plus-circle fa-fw"></i> New Group
</a>
</li>
</ul>
</li>
<li ng-class="{active: $state.is('backend.org.events')}" ng-if="orgProfile.useEvents">
<a ui-sref="backend.org.events({orgId: params.orgId})">
<i class="fa fa-file-text-o fa-fw"></i> <span>Event Logs</span>
</a>
</li>
<li ng-class="{active: $state.is('backend.org.billing')}" ng-if="isOrgOwner(orgProfile)">
<a ui-sref="backend.org.billing({orgId: params.orgId})">
<i class="fa fa-credit-card fa-fw"></i> Billing &amp; Licensing
</a>
</li>
<li ng-class="{active: $state.is('backend.org.settings')}" ng-if="isOrgOwner(orgProfile)">
<a ui-sref="backend.org.settings({orgId: params.orgId})">
<i class="fa fa-gears fa-fw"></i> <span>Settings</span>
</a>
</li>
</ul>
</section>
</aside>
<div class="content-wrapper" ui-view>
</div>

View file

@ -0,0 +1,13 @@
<div class="modal-header">
<button type="button" class="close" ng-click="close()" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><i class="fa fa-star"></i> Paid Plan Required</h4>
</div>
<div class="modal-body">
This feature is not available for free organizations. Switch to a paid plan to unlock more features.
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary btn-flat" ng-click="go()" ng-if="admin">
Upgrade Organization
</button>
<button type="button" class="btn btn-default btn-flat" ng-click="close()">Close</button>
</div>

View file

@ -0,0 +1,36 @@
<div class="modal-header">
<button type="button" class="close" ng-click="close()" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><i class="fa fa-star"></i> Premium <span class="hidden-xs">Membership</span> Required</h4>
</div>
<div class="modal-body">
<p>This features requires a premium membership. Sign up for premium and get:</p>
<ul class="fa-ul">
<li>
<i class="fa-li fa fa-check text-green"></i>
1 GB of encrypted file storage.
</li>
<li>
<i class="fa-li fa fa-check text-green"></i>
Additional two-step login options such as YubiKey, FIDO U2F, and Duo.
</li>
<li>
<i class="fa-li fa fa-check text-green"></i>
TOTP verification code (2FA) generator for logins in your vault.
</li>
<li>
<i class="fa-li fa fa-check text-green"></i>
Priority customer support.
</li>
<li>
<i class="fa-li fa fa-check text-green"></i>
All future premium features. More coming soon!
</li>
</ul>
All for just <b>{{10 | currency:"$":0}}</b> /year.
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary btn-flat" ng-click="go()">
Get Premium
</button>
<button type="button" class="btn btn-default btn-flat" ng-click="close()">Close</button>
</div>

View file

@ -0,0 +1,168 @@
<header class="main-header" ng-controller="topNavController as topNav">
<a ui-sref="backend.user.vault" class="logo">
<span class="logo-mini"><i class="fa fa-shield"></i></span>
<span class="logo-lg"><i class="fa fa-shield"></i> <b>bit</b>warden</span>
</a>
<nav class="navbar navbar-static-top" role="navigation">
<a class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<li><a ui-sref="frontend.logout">Log Out</a></li>
<li class="control-sidebar-show">
<a href="#" stop-click ng-click="toggleControlSidebar()"><i class="fa fa-bars"></i></a>
</li>
</ul>
</div>
</nav>
</header>
<aside class="main-sidebar" ng-controller="sideNavController as sideNav">
<section class="sidebar">
<div class="user-panel">
<div class="pull-left image">
<letter-avatar data="{{name}}" avclass="img-responsive"></letter-avatar>
</div>
<div class="pull-left info">
<p>{{name}}</p>
<a ui-sref="frontend.logout">Log Out</a>
</div>
</div>
<form class="sidebar-form">
<label for="search" class="sr-only">Search</label>
<div class="form-group has-feedback">
<input type="text" id="search" class="form-control" placeholder="Search my vault..."
ng-focus="searchVault()" ng-model="main.searchVaultText" />
<span class="fa fa-search form-control-feedback" aria-hidden="true"></span>
</div>
</form>
<ul class="sidebar-menu">
<li class="header">WEB VAULT</li>
<li class="treeview" ng-class="{active: $state.includes('backend.user.vault')}">
<a ui-sref="backend.user.vault"><i class="fa fa-lock fa-fw"></i> <span>My Vault</span></a>
<ul class="treeview-menu" ng-class="{'menu-open': $state.includes('backend.user.vault')}">
<li>
<a href="#" stop-click ng-click="addCipher()">
<i class="fa fa-plus-circle fa-fw"></i> New Item
</a>
</li>
<li>
<a href="#" stop-click ng-click="addFolder()">
<i class="fa fa-folder fa-fw"></i> New Folder
</a>
</li>
</ul>
</li>
<li class="treeview" ng-class="{active: $state.is('backend.user.tools') ||
$state.is('backend.user.reportsBreach')}">
<a ui-sref="backend.user.tools"><i class="fa fa-wrench fa-fw"></i> <span>Tools</span></a>
<ul class="treeview-menu" ng-class="{'menu-open': $state.is('backend.user.tools') ||
$state.is('backend.user.reportsBreach')}">
<li ng-class="{active: $state.is('backend.user.reportsBreach')}">
<a ui-sref="backend.user.reportsBreach">
<i class="fa fa-circle-o fa-fw"></i> Data Breach Report
</a>
</li>
</ul>
</li>
<li class="treeview"
ng-class="{active: $state.is('backend.user.settings') || $state.is('backend.user.settingsDomains') ||
$state.is('backend.user.settingsCreateOrg') || $state.is('backend.user.settingsTwoStep') ||
$state.is('backend.user.settingsPremium') || $state.is('backend.user.settingsBilling')}">
<a ui-sref="backend.user.settings"><i class="fa fa-cogs fa-fw"></i> <span>Settings</span></a>
<ul class="treeview-menu" ng-class="{'menu-open': $state.is('backend.user.settings') ||
$state.is('backend.user.settingsDomains') || $state.is('backend.user.settingsCreateOrg')}">
<li ng-class="{active: $state.is('backend.user.settingsPremium')}">
<a ui-sref="backend.user.settingsPremium" ng-if="!main.userProfile || !main.userProfile.premium">
<i class="fa fa-star fa-fw"></i> Go Premium!
</a>
</li>
<li ng-class="{active: $state.is('backend.user.settingsCreateOrg')}">
<a ui-sref="backend.user.settingsCreateOrg">
<i class="fa fa-plus-circle fa-fw"></i> New Organization
</a>
</li>
<li ng-class="{active: $state.is('backend.user.settingsBilling')}">
<a ui-sref="backend.user.settingsBilling" ng-if="main.userProfile && main.userProfile.premium">
<i class="fa fa-circle-o fa-fw"></i> Billing &amp; Licensing
</a>
</li>
<li ng-class="{active: $state.is('backend.user.settingsTwoStep')}">
<a ui-sref="backend.user.settingsTwoStep">
<i class="fa fa-fw fa-circle-o"></i> Two-step Login
</a>
</li>
<li ng-class="{active: $state.is('backend.user.settingsDomains')}">
<a ui-sref="backend.user.settingsDomains">
<i class="fa fa-fw fa-circle-o"></i> Domain Rules
</a>
</li>
</ul>
</li>
<li ng-class="{active: $state.is('backend.user.apps')}">
<a ui-sref="backend.user.apps">
<small class="label pull-right bg-green">FREE</small>
<i class="fa fa-download fa-fw"></i> <span>Get the Apps</span>
</a>
</li>
<li>
<a href="https://help.bitwarden.com/" target="_blank"
analytics-on="click" analytics-event="Clicked Get Help">
<i class="fa fa-info-circle fa-fw"></i> <span>Get Help</span>
</a>
</li>
<li class="header">
ORGANIZATIONS
</li>
</ul>
<div class="subsection">
<div ng-if="!orgs.length" class="hidden-collapsed">
<p>You do not belong to any organizations.</p>
<a ui-sref="backend.user.settingsCreateOrg" class="btn btn-default btn-flat btn-block">
Create an Organization
</a>
</div>
<ul class="list-inline" ng-if="orgs.length">
<li ng-repeat="org in orgs | orderBy: ['name'] track by org.id">
<a href="#" stop-click ng-click="viewOrganization(org)">
<letter-avatar data="{{org.name}}" avclass="img-responsive img-rounded" round="false"
avheight="40" avwidth="40" bgcolor="{{orgIconBgColor}}" avborder="true"
borderstyle="{{orgIconBorder}}" textcolor="{{orgIconTextColor}}"></letter-avatar>
</a>
</li>
</ul>
</div>
</section>
</aside>
<div class="content-wrapper">
<div class="alert alert-danger alert-notification" ng-if="main.outdatedBrowser" ng-click="updateBrowser()">
<h4><i class="fa fa-warning fa-fw"></i> Update Your Browser</h4>
You are using an unsupported web browser. The web vault may not function properly.
<u>Update your browser now</u>.
</div>
<div class="alert alert-warning alert-notification" ng-click="updateKey()" ng-if="!main.usingEncKey">
<h4><i class="fa fa-key fa-fw"></i> Update Your Encryption Key</h4>
You are currently using an outdated encryption scheme.
<a href="#" stop-click>Learn more and update now</a>.
</div>
<div class="alert alert-warning alert-notification" ng-click="verifyEmail()"
ng-if="main.usingEncKey && main.userProfile && !main.userProfile.emailVerified">
<h4><i class="fa fa-envelope fa-fw"></i> Verify Your Email</h4>
<div ng-if="!verifyEmailSent">
Verify your account's email address to unlock access to all features.
<a href="#" stop-click>Send verification email now</a>.
<i class="fa fa-spin fa-refresh" ng-if="sendingVerify"></i>
</div>
<div ng-if="verifyEmailSent">
Check your email inbox for a verification link.
<a href="#" stop-click>Send verification email again</a>.
<i class="fa fa-spin fa-refresh" ng-if="sendingVerify"></i>
</div>
</div>
<div ui-view></div>
</div>