=====================
Working with accounts
=====================

.. contents::
   :local:
   :depth: 1

Personal accounts
=================

Overview
--------

This section explains how to create a free, personal account, log in
and out, and access the settings and features of different types of
accounts.

Creating a free account
-----------------------

All Anaconda Cloud users can find, download and use packages without having a
Cloud account.

However, you need to create a Cloud account to:

* Author packages.

* Upload packages, notebooks and environments.

* Access shared, private packages.

* Create organizations.

.. figure:: /img/cloud-home.png
   :width: 50%

   ..

|

.. _cloud-accounts-create:

To sign up for a free Cloud account:

#. In a browser, go to `Anaconda Cloud <http://anaconda.org>`_.

#. Make sure the **Sign Up** tab is active.

   NOTE: There is also a **Sign In** tab for existing users.

#. Select a username.

#. Enter your email address.

   NOTE: Users who register with an .edu email are granted some
   additional features.

#. Create a password.

   NOTE: The password must be at least 7 characters long.

#. Enter the password again to confirm it.

#. Read and accept the Terms and Conditions.

#. Click the Sign up button.

   The system creates your free account, logs you in and
   displays your personal dashboard.

TIP: Cloud displays your profile photo if the email address you
used to register on Cloud is associated with a Gravatar
account. To associate your email address or to change your
Gravatar profile photo, go to
`gravatar.com <http://gravatar.com>`_.

When you are logged into Cloud, the Profile list appears at the
top right of every page. This indicates the name of the currently
active user or organization.

.. figure:: /img/managing-toolbar-bar.png
   :width: 50%

   ..

|

The View menu contains these options:

* ``Landscape``: Your home page.

* ``Favorites``: Packages from other users you have starred.

* ``Packages``: Only packages you have created.

* ``Notebooks``: Only notebooks you have created.

* ``Environments``: Only environments you have created.

* ``Projects``: Only projects you have uploaded.

.. figure:: /img/managing-toolbar-menu.png
   :scale: 50 %

   ..

|

Packages, notebooks and environments that you have created with
this account appear on your dashboard. For more information, see
:ref:`packages <cloud-packages>`.

Resetting your password
-----------------------

The **Sign In** tab provides two links to help regain access to your
account:

* ``I forgot my username.`` Click this link to have the username
  emailed to the email address of record.

* ``I forgot my password.`` Click this link to have a reset password
  link sent to the email address of record.

NOTE: The reset password link expires within 24 hours. If you no
longer have access to the email account, you can create a new
account or email
`support@anaconda.com <mailto:support@anaconda.com>`_ for assistance.

.. _cloud-accounts-upgrade-plan:

Upgrading or downgrading your plan
----------------------------------

To change a Cloud plan:

#. Log in to the Cloud account that you want to change.

#. At the top right of the Cloud interface, in the Profile list,
   select Settings.

#. Select the Billing option.

   .. figure:: /img/cloud-accounts-change-plan.png

      ..

   |

#. Click the Change Plan button.

#. Select the desired plan.

   If you are moving from a free to a charged plan, enter your
   credit card information, and then click the OK button.

NOTE: If you need more private packages or storage space than is
included in a personal plan, `contact Anaconda
<https://www.anaconda.com/contact-us>`_ so we can customize a
plan for you.

NOTE: If you need assistance with billing questions, you can `contact
Anaconda <https://www.anaconda.com/contact-us>`_.

.. _cloud-accounts-tokens:

Creating access tokens
----------------------

The best way to manage access or make packages private is to create
:ref:`organizations <creating-orgs>` or :ref:`groups <org-groups>`,
which allow you to set separate permissions per package, notebook or
environment.

You can also control access with the :ref:`cloud-glossary-token`
system. You can use tokens to control access to private
repositories, collections or packages on Cloud. Additionally,
the degree of access a token grants is completely configurable
at the time of generation. You can generate multiple tokens to
control which groups of users have access to certain features
if they have the appropriate token.

.. _cloud-accounts-generate:

Generating tokens
^^^^^^^^^^^^^^^^^

You can generate tokens using the Web UI or Anaconda Client.

NOTE: By default, tokens expire after one year.

To generate a token using the Web UI:

#. Navigate to::

    https://anaconda.org/<channel>/settings/access

   NOTE: Replace ``<channel>`` with the actual channel name.

#. From here you can select a name for the token and set the
   required scopes.

   .. figure:: /img/cloud-tokens.png

      ..

   |

To generate a token with Client:

#. In your Terminal window or Anaconda Prompt run::

       anaconda auth --create --name YOUR-TOKEN-NAME --scopes 'repos conda:download'

   NOTE: Replace ``YOUR-TOKEN-NAME`` with the token name you want.

#. This generates a random alphanumeric token string, which you
   can then distribute to fellow Cloud users to enable them to
   download a package that you have marked private. The token
   produced in this example provides access to download any of
   your private conda repositories.

#. It can be enabled with the ``conda config`` command. In your Terminal window or Anaconda Prompt run::

       conda config --add channels https://conda.anaconda.org/t/<token>/<channel>

    Add a channel with a token and a label::

       conda config --add channels https://conda.anaconda.org/t/<token>/<channel>/label/<labelname>


    NOTE: Replace ``<token>`` with your token string,``<channel>`` with the channel name,
    ``<labelname>`` with the label name used in :ref:`cloud-accounts-generate`.

NOTE: If you lose the random alphanumeric string, you need to
:ref:`revoke the token <cloud-accounts-revoke-token>` and create
a new one.

Scopes are provided as a space-separated, quoted list. The
available scopes are:

* ``all``: Allow all operations.

* ``api``: Allow all API operations.

* ``api:modify-group``: Allow addition and modification of groups.

* ``api:read``: Allow read access to the API site.

* ``api:write``: Allow write access to the API site.

* ``conda``: Allow all operations on Conda repositories.

* ``conda:download``: Allow private downloads from Conda repositories.

* ``pypi``: Allow all operations on PyPI repositories.

* ``pypi:download``: Allow private downloads from PyPI repositories.

* ``pypi:upload``: Allow uploads to PyPI repositories.

* ``repos``: Allow access to all package repositories.

NOTE: Tokens provide access to all packages within a specified
channel. Separate permissions per package, notebook or environment
may be better handled with :ref:`organizations <creating-orgs>`
and :ref:`groups <org-groups>`.

.. _cloud-accounts-revoke-token:

Revoking tokens
^^^^^^^^^^^^^^^

You can revoke tokens using the Web UI or Anaconda Client.

To revoke a token using the Web UI, navigate to the following
URL::

    https://anaconda.org/<channel>/settings/access

NOTE: Replace ``<channel>`` with the actual channel name.

To revoke a token using Client, in your Terminal window or Anaconda Prompt run::

    anaconda auth -r YOUR-TOKEN-NAME

NOTE: Replace ``YOUR-TOKEN-NAME`` with the token name you want to
revoke.

Organization accounts
=====================

Overview
--------

You can create a :ref:`Cloud organization <cloud-organizations>` to:

* Share packages, environments or notebooks under an organization's
  account rather than your personal account.

* Assign multiple account administrators.

* Assign different access permissions to groups of users and customize
  per-package access by group.

* Host more, larger packages.

.. |nbsp| unicode::    U+00A0 .. NO-BREAK SPACE
