Skip to content

Commit

Permalink
Add support for GPG keys
Browse files Browse the repository at this point in the history
Closes #355
  • Loading branch information
Gauvain Pocentek committed Nov 1, 2017
1 parent aba713a commit d0c4118
Show file tree
Hide file tree
Showing 4 changed files with 222 additions and 138 deletions.
71 changes: 19 additions & 52 deletions docs/gl_objects/users.py
Expand Up @@ -36,37 +36,44 @@
# end block

# key list
keys = gl.user_keys.list(user_id=1)
# or
keys = user.keys.list()
# end key list

# key get
key = gl.user_keys.list(1, user_id=1)
# or
key = user.keys.get(1)
# end key get

# key create
k = gl.user_keys.create({'title': 'my_key',
'key': open('/home/me/.ssh/id_rsa.pub').read()},
user_id=2)
# or
k = user.keys.create({'title': 'my_key',
'key': open('/home/me/.ssh/id_rsa.pub').read()})
# end key create

# key delete
gl.user_keys.delete(1, user_id=1)
# or
user.keys.delete(1)
# or
key.delete()
# end key delete

# email list
emails = gl.user_emails.list(user_id=1)
# gpgkey list
gpgkeys = user.gpgkeys.list()
# end gpgkey list

# gpgkey get
gpgkey = user.gpgkeys.get(1)
# end gpgkey get

# gpgkey create
# get the key with `gpg --export -a GPG_KEY_ID`
k = user.gpgkeys.create({'key': public_key_content})
# end gpgkey create

# gpgkey delete
user.gpgkeys.delete(1)
# or
gpgkey.delete()
# end gpgkey delete

# email list
emails = user.emails.list()
# end email list

Expand All @@ -77,14 +84,10 @@
# end email get

# email create
k = gl.user_emails.create({'email': 'foo@bar.com'}, user_id=2)
# or
k = user.emails.create({'email': 'foo@bar.com'})
# end email create

# email delete
gl.user_emails.delete(1, user_id=1)
# or
user.emails.delete(1)
# or
email.delete()
Expand All @@ -94,39 +97,3 @@
gl.auth()
current_user = gl.user
# end currentuser get

# currentuser key list
keys = gl.user.keys.list()
# end currentuser key list

# currentuser key get
key = gl.user.keys.get(1)
# end currentuser key get

# currentuser key create
key = gl.user.keys.create({'id': 'my_key', 'key': key_content})
# end currentuser key create

# currentuser key delete
gl.user.keys.delete(1)
# or
key.delete()
# end currentuser key delete

# currentuser email list
emails = gl.user.emails.list()
# end currentuser email list

# currentuser email get
email = gl.user.emails.get(1)
# end currentuser email get

# currentuser email create
email = gl.user.emails.create({'email': 'foo@bar.com'})
# end currentuser email create

# currentuser email delete
gl.user.emails.delete(1)
# or
email.delete()
# end currentuser email delete
218 changes: 132 additions & 86 deletions docs/gl_objects/users.rst
@@ -1,14 +1,32 @@
#####
######################
Users and current user
######################

The Gitlab API exposes user-related method that can be manipulated by admins
only.

The currently logged-in user is also exposed.

Users
#####
=====

References
----------

* v4 API:

+ :class:`gitlab.v4.objects.User`
+ :class:`gitlab.v4.objects.UserManager`
+ :attr:`gitlab.Gitlab.users`

Use :class:`~gitlab.objects.User` objects to manipulate repository branches.
* v3 API:

To create :class:`~gitlab.objects.User` objects use the
:attr:`gitlab.Gitlab.users` manager.
+ :class:`gitlab.v3.objects.User`
+ :class:`gitlab.v3.objects.UserManager`
+ :attr:`gitlab.Gitlab.users`

Examples
========
--------

Get the list of users:

Expand Down Expand Up @@ -52,14 +70,97 @@ Block/Unblock a user:
:start-after: # block
:end-before: # end block

Current User
============

* v4 API:

+ :class:`gitlab.v4.objects.CurrentUser`
+ :class:`gitlab.v4.objects.CurrentUserManager`
+ :attr:`gitlab.Gitlab.user`

* v3 API:

+ :class:`gitlab.v3.objects.CurrentUser`
+ :class:`gitlab.v3.objects.CurrentUserManager`
+ :attr:`gitlab.Gitlab.user`

Examples
--------

Get the current user:

.. literalinclude:: users.py
:start-after: # currentuser get
:end-before: # end currentuser get

GPG keys
========

You can manipulate GPG keys for the current user and for the other users if you
are admin.

* v4 API:

+ :class:`gitlab.v4.objects.CurrentUserGPGKey`
+ :class:`gitlab.v4.objects.CurrentUserGPGKeyManager`
+ :attr:`gitlab.v4.objects.CurrentUser.gpgkeys`
+ :class:`gitlab.v4.objects.UserGPGKey`
+ :class:`gitlab.v4.objects.UserGPGKeyManager`
+ :attr:`gitlab.v4.objects.User.gpgkeys`

Exemples
--------

List GPG keys for a user:

.. literalinclude:: users.py
:start-after: # gpgkey list
:end-before: # end gpgkey list

Get an GPG gpgkey for a user:

.. literalinclude:: users.py
:start-after: # gpgkey get
:end-before: # end gpgkey get

Create an GPG gpgkey for a user:

.. literalinclude:: users.py
:start-after: # gpgkey create
:end-before: # end gpgkey create

Delete an GPG gpgkey for a user:

.. literalinclude:: users.py
:start-after: # gpgkey delete
:end-before: # end gpgkey delete

SSH keys
========

Use the :class:`~gitlab.objects.UserKey` objects to manage user keys.
You can manipulate SSH keys for the current user and for the other users if you
are admin.

* v4 API:

+ :class:`gitlab.v4.objects.CurrentUserKey`
+ :class:`gitlab.v4.objects.CurrentUserKeyManager`
+ :attr:`gitlab.v4.objects.CurrentUser.keys`
+ :class:`gitlab.v4.objects.UserKey`
+ :class:`gitlab.v4.objects.UserKeyManager`
+ :attr:`gitlab.v4.objects.User.keys`

To create :class:`~gitlab.objects.UserKey` objects use the
:attr:`User.keys <gitlab.objects.User.keys>` or :attr:`gitlab.Gitlab.user_keys`
managers.
* v3 API:

+ :class:`gitlab.v3.objects.CurrentUserKey`
+ :class:`gitlab.v3.objects.CurrentUserKeyManager`
+ :attr:`gitlab.v3.objects.CurrentUser.keys`
+ :attr:`gitlab.Gitlab.user.keys`
+ :class:`gitlab.v3.objects.UserKey`
+ :class:`gitlab.v3.objects.UserKeyManager`
+ :attr:`gitlab.v3.objects.User.keys`
+ :attr:`gitlab.Gitlab.user_keys`

Exemples
--------
Expand Down Expand Up @@ -91,10 +192,28 @@ Delete an SSH key for a user:
Emails
======

Use the :class:`~gitlab.objects.UserEmail` objects to manage user emails.
You can manipulate emails for the current user and for the other users if you
are admin.

* v4 API:

+ :class:`gitlab.v4.objects.CurrentUserEmail`
+ :class:`gitlab.v4.objects.CurrentUserEmailManager`
+ :attr:`gitlab.v4.objects.CurrentUser.emails`
+ :class:`gitlab.v4.objects.UserEmail`
+ :class:`gitlab.v4.objects.UserEmailManager`
+ :attr:`gitlab.v4.objects.User.emails`

To create :class:`~gitlab.objects.UserEmail` objects use the :attr:`User.emails
<gitlab.objects.User.emails>` or :attr:`gitlab.Gitlab.user_emails` managers.
* v3 API:

+ :class:`gitlab.v3.objects.CurrentUserEmail`
+ :class:`gitlab.v3.objects.CurrentUserEmailManager`
+ :attr:`gitlab.v3.objects.CurrentUser.emails`
+ :attr:`gitlab.Gitlab.user.emails`
+ :class:`gitlab.v3.objects.UserEmail`
+ :class:`gitlab.v3.objects.UserEmailManager`
+ :attr:`gitlab.v3.objects.User.emails`
+ :attr:`gitlab.Gitlab.user_emails`

Exemples
--------
Expand Down Expand Up @@ -122,76 +241,3 @@ Delete an email for a user:
.. literalinclude:: users.py
:start-after: # email delete
:end-before: # end email delete

Current User
============

Use the :class:`~gitlab.objects.CurrentUser` object to get information about
the currently logged-in user.

Use the :class:`~gitlab.objects.CurrentUserKey` objects to manage user keys.

To create :class:`~gitlab.objects.CurrentUserKey` objects use the
:attr:`gitlab.objects.CurrentUser.keys <CurrentUser.keys>` manager.

Use the :class:`~gitlab.objects.CurrentUserEmail` objects to manage user emails.

To create :class:`~gitlab.objects.CurrentUserEmail` objects use the
:attr:`gitlab.objects.CurrentUser.emails <CurrentUser.emails>` manager.

Examples
--------

Get the current user:

.. literalinclude:: users.py
:start-after: # currentuser get
:end-before: # end currentuser get

List the current user SSH keys:

.. literalinclude:: users.py
:start-after: # currentuser key list
:end-before: # end currentuser key list

Get a key for the current user:

.. literalinclude:: users.py
:start-after: # currentuser key get
:end-before: # end currentuser key get

Create a key for the current user:

.. literalinclude:: users.py
:start-after: # currentuser key create
:end-before: # end currentuser key create

Delete a key for the current user:

.. literalinclude:: users.py
:start-after: # currentuser key delete
:end-before: # end currentuser key delete

List the current user emails:

.. literalinclude:: users.py
:start-after: # currentuser email list
:end-before: # end currentuser email list

Get an email for the current user:

.. literalinclude:: users.py
:start-after: # currentuser email get
:end-before: # end currentuser email get

Create an email for the current user:

.. literalinclude:: users.py
:start-after: # currentuser email create
:end-before: # end currentuser email create

Delete an email for the current user:

.. literalinclude:: users.py
:start-after: # currentuser email delete
:end-before: # end currentuser email delete

0 comments on commit d0c4118

Please sign in to comment.