##// END OF EJS Templates
migration: detach permissions defaults migration from current models....
migration: detach permissions defaults migration from current models. This was causing that latest code was used results in potential problems during migration. Now we use the bound migraiton code that always will perform the same exact migrations independent of the current code changes.

File last commit:

r1540:e835784f default
r1544:cf0c0eb2 default
Show More
views.py
194 lines | 6.8 KiB | text/x-python | PythonLexer
my-account-auth-tokens: moved into pyramid apps....
r1505 # -*- coding: utf-8 -*-
# Copyright (C) 2016-2017 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import logging
from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_config
from rhodecode.apps._base import BaseAppView
my-account: switched my-password view to pyramid.
r1537 from rhodecode import forms
my-account-auth-tokens: moved into pyramid apps....
r1505 from rhodecode.lib.auth import LoginRequired, NotAnonymous, CSRFRequired
from rhodecode.lib import helpers as h
my-account: switched my-password view to pyramid.
r1537 from rhodecode.lib.utils2 import safe_int, md5
my-account-auth-tokens: moved into pyramid apps....
r1505 from rhodecode.model.auth_token import AuthTokenModel
from rhodecode.model.meta import Session
my-account: switched my-password view to pyramid.
r1537 from rhodecode.model.user import UserModel
from rhodecode.model.validation_schema.schemas import user_schema
my-account-auth-tokens: moved into pyramid apps....
r1505
log = logging.getLogger(__name__)
class MyAccountView(BaseAppView):
auth-tokens: extended views to allowed override of adding scope in EE edition.
r1507 ALLOW_SCOPED_TOKENS = False
"""
This view has alternative version inside EE, if modified please take a look
in there as well.
"""
my-account-auth-tokens: moved into pyramid apps....
r1505
def load_default_context(self):
c = self._get_local_tmpl_context()
c.user = c.auth_user.get_instance()
auth-tokens: extended views to allowed override of adding scope in EE edition.
r1507 c.allow_scoped_tokens = self.ALLOW_SCOPED_TOKENS
my-account-auth-tokens: moved into pyramid apps....
r1505 self._register_global_c(c)
return c
@LoginRequired()
@NotAnonymous()
@view_config(
my-account: moved profile page into pyramid.
r1540 route_name='my_account_profile', request_method='GET',
renderer='rhodecode:templates/admin/my_account/my_account.mako')
def my_account_profile(self):
c = self.load_default_context()
c.active = 'profile'
return self._get_template_context(c)
@LoginRequired()
@NotAnonymous()
@view_config(
my-account: switched my-password view to pyramid.
r1537 route_name='my_account_password', request_method='GET',
renderer='rhodecode:templates/admin/my_account/my_account.mako')
def my_account_password(self):
c = self.load_default_context()
c.active = 'password'
c.extern_type = c.user.extern_type
schema = user_schema.ChangePasswordSchema().bind(
username=c.user.username)
form = forms.Form(
schema, buttons=(forms.buttons.save, forms.buttons.reset))
c.form = form
return self._get_template_context(c)
@LoginRequired()
@NotAnonymous()
@CSRFRequired()
@view_config(
route_name='my_account_password', request_method='POST',
renderer='rhodecode:templates/admin/my_account/my_account.mako')
def my_account_password_update(self):
_ = self.request.translate
c = self.load_default_context()
c.active = 'password'
c.extern_type = c.user.extern_type
schema = user_schema.ChangePasswordSchema().bind(
username=c.user.username)
form = forms.Form(
schema, buttons=(forms.buttons.save, forms.buttons.reset))
if c.extern_type != 'rhodecode':
raise HTTPFound(self.request.route_path('my_account_password'))
controls = self.request.POST.items()
try:
valid_data = form.validate(controls)
UserModel().update_user(c.user.user_id, **valid_data)
c.user.update_userdata(force_password_change=False)
Session().commit()
except forms.ValidationFailure as e:
c.form = e
return self._get_template_context(c)
except Exception:
log.exception("Exception updating password")
h.flash(_('Error occurred during update of user password'),
category='error')
else:
instance = c.auth_user.get_instance()
self.session.setdefault('rhodecode_user', {}).update(
{'password': md5(instance.password)})
self.session.save()
h.flash(_("Successfully updated password"), category='success')
raise HTTPFound(self.request.route_path('my_account_password'))
@LoginRequired()
@NotAnonymous()
@view_config(
my-account-auth-tokens: moved into pyramid apps....
r1505 route_name='my_account_auth_tokens', request_method='GET',
renderer='rhodecode:templates/admin/my_account/my_account.mako')
def my_account_auth_tokens(self):
_ = self.request.translate
c = self.load_default_context()
c.active = 'auth_tokens'
c.lifetime_values = [
(str(-1), _('forever')),
(str(5), _('5 minutes')),
(str(60), _('1 hour')),
(str(60 * 24), _('1 day')),
(str(60 * 24 * 30), _('1 month')),
]
c.lifetime_options = [(c.lifetime_values, _("Lifetime"))]
c.role_values = [
(x, AuthTokenModel.cls._get_role_name(x))
for x in AuthTokenModel.cls.ROLES]
c.role_options = [(c.role_values, _("Role"))]
c.user_auth_tokens = AuthTokenModel().get_auth_tokens(
auth-tokens: extended views to allowed override of adding scope in EE edition.
r1507 c.user.user_id, show_expired=True)
my-account-auth-tokens: moved into pyramid apps....
r1505 return self._get_template_context(c)
auth-tokens: extended views to allowed override of adding scope in EE edition.
r1507 def maybe_attach_token_scope(self, token):
# implemented in EE edition
pass
my-account-auth-tokens: moved into pyramid apps....
r1505 @LoginRequired()
@NotAnonymous()
@CSRFRequired()
@view_config(
route_name='my_account_auth_tokens_add', request_method='POST')
def my_account_auth_tokens_add(self):
_ = self.request.translate
c = self.load_default_context()
lifetime = safe_int(self.request.POST.get('lifetime'), -1)
description = self.request.POST.get('description')
role = self.request.POST.get('role')
auth-tokens: extended views to allowed override of adding scope in EE edition.
r1507 token = AuthTokenModel().create(
c.user.user_id, description, lifetime, role)
self.maybe_attach_token_scope(token)
my-account-auth-tokens: moved into pyramid apps....
r1505 Session().commit()
auth-tokens: extended views to allowed override of adding scope in EE edition.
r1507
my-account-auth-tokens: moved into pyramid apps....
r1505 h.flash(_("Auth token successfully created"), category='success')
return HTTPFound(h.route_path('my_account_auth_tokens'))
@LoginRequired()
@NotAnonymous()
@CSRFRequired()
@view_config(
route_name='my_account_auth_tokens_delete', request_method='POST')
def my_account_auth_tokens_delete(self):
_ = self.request.translate
c = self.load_default_context()
del_auth_token = self.request.POST.get('del_auth_token')
if del_auth_token:
AuthTokenModel().delete(del_auth_token, c.user.user_id)
Session().commit()
h.flash(_("Auth token successfully deleted"), category='success')
return HTTPFound(h.route_path('my_account_auth_tokens'))