Exemplo n.º 1
0
def forget_password(request):
    if request.method == 'POST':
        try:
            defend_attack(request)
            email = request.POST.get('email', '')
            username = request.POST.get('username', '')
            user = get_object(User, username=username, email=email)
            if user:
                timestamp = int(time.time())
                hash_encode = PyCrypt.md5_crypt(
                    str(user.uuid_id) + str(timestamp) + KEY)
                msg = u"""
                Hi %s, 请点击下面链接重设密码!
                http://%s:%s/user/password/reset/?uuid=%s&timestamp=%s&hash=%s
                """ % (user.username, HOST_IP, HOST_PORT, user.uuid_id,
                       timestamp, hash_encode)
                if not default_email:
                    msg = u'没有邮件服务器信息,请先到告警管理中配置邮件服务器,谢谢!'
                rest = send_email(default_email, u'忘记登录密码', [email], msg)
                logger.info(u'重置密码,发送邮件信息:%s' % rest)
                if rest['msgCode'] == 0:
                    msg = u'邮件成功已成功发送至您的邮箱,请登陆邮箱,点击邮件重设密码'
                    return http_success(request, msg)
                else:
                    error = u'邮件发送失败:%s' % rest['msgError']
                    return http_error(request, error)
            else:
                error = u'用户不存在或邮件地址错误'
                return http_error(request, error)
        except Exception as e:
            logger.error(e)
Exemplo n.º 2
0
def forget_password(request):
    if request.method == 'POST':
        try:
            defend_attack(request)
            email = request.POST.get('email', '')
            username = request.POST.get('username', '')
            user = get_object(User, username=username, email=email)
            if user:
                timestamp = int(time.time())
                hash_encode = PyCrypt.md5_crypt(str(user.uuid_id) + str(timestamp) + KEY)
                msg = u"""
                Hi %s, 请点击下面链接重设密码!
                http://%s:%s/user/password/reset/?uuid=%s&timestamp=%s&hash=%s
                """ % (user.username, HOST_IP, HOST_PORT, user.uuid_id, timestamp, hash_encode)
                if not default_email:
                    msg = u'没有邮件服务器信息,请先到告警管理中配置邮件服务器,谢谢!'
                rest = send_email(default_email, u'忘记登录密码', [email], msg)
                logger.info(u'重置密码,发送邮件信息:%s'%rest)
                if rest['msgCode'] == 0:
                    msg = u'邮件成功已成功发送至您的邮箱,请登陆邮箱,点击邮件重设密码'
                    return http_success(request, msg)
                else:
                    error = u'邮件发送失败:%s'%rest['msgError']
                    return http_error(request, error)
            else:
                error = u'用户不存在或邮件地址错误'
                return http_error(request, error)
        except Exception as e:
            logger.error(e)
Exemplo n.º 3
0
def send_mail_retry(request, res, *args):
    res['operator'] = u'发送邮件'
    uuid_r = request.GET.get('uuid', '1')
    user = get_object(User, uuid_id=uuid_r)
    msg = u"""
    MagicStack地址: %s
    用户名:%s
    重设密码:%s/userManage/password/forget/
    请登录web点击个人信息页面重新生成ssh密钥
    """ % (URL, user.username, URL)
    if not default_email:
        return HttpResponse(u'没有邮件服务器信息,请先到告警管理中配置邮件服务器,谢谢!')
    try:
        send_email(default_email, u'邮件重发', [user.email], msg)
    except IndexError, e:
        res['flag'] = 'false'
        res['comment'].append(e)
        return Http404
Exemplo n.º 4
0
def send_mail_retry(request,res, *args):
    res['operator'] = u'发送邮件'
    uuid_r = request.GET.get('uuid', '1')
    user = get_object(User, uuid_id=uuid_r)
    msg = u"""
    MagicStack地址: %s
    用户名:%s
    重设密码:%s/userManage/password/forget/
    请登录web点击个人信息页面重新生成ssh密钥
    """ % (URL, user.username, URL)
    if not default_email:
        return HttpResponse(u'没有邮件服务器信息,请先到告警管理中配置邮件服务器,谢谢!')
    try:
        send_email(default_email, u'邮件重发', [user.email], msg)
    except IndexError,e:
        res['flag'] = 'false'
        res['comment'].append(e)
        return Http404
Exemplo n.º 5
0
def user_add_mail(user, default_email, kwargs):
    """
    add user send mail
    发送用户添加邮件
    """
    user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'}
    mail_title = u'恭喜你!用户 %s 已成功添加至MagicStack,您可以用此账户登录MagicStack' % user.name
    mail_msg = u"""
    Hi, %s
        您的用户名: %s
        您的权限: %s
        您的web登录密码: %s
        感谢您使用MagicStack,谢谢!
    """ % (user.name, user.username, user_role.get(user.role, u'普通用户'),
           kwargs.get('password'))
    rest_send_mail = send_email(default_email, mail_title, [user.email], mail_msg)
    if rest_send_mail['msgCode'] == 1:
        return False
    return True
Exemplo n.º 6
0
def user_add_mail(user, default_email, kwargs):
    """
    add user send mail
    发送用户添加邮件
    """
    user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'}
    mail_title = u'恭喜你!用户 %s 已成功添加至MagicStack,您可以用此账户登录MagicStack' % user.name
    mail_msg = u"""
    Hi, %s
        您的用户名: %s
        您的权限: %s
        您的web登录密码: %s
        感谢您使用MagicStack,谢谢!
    """ % (user.name, user.username, user_role.get(
        user.role, u'普通用户'), kwargs.get('password'))
    rest_send_mail = send_email(default_email, mail_title, [user.email],
                                mail_msg)
    if rest_send_mail['msgCode'] == 1:
        return False
    return True
Exemplo n.º 7
0
def user_edit(request, res, *args):
    res['operator'] = u'编辑用户'
    res['emer_content'] = 1
    if request.method == 'GET':
        rest = {}
        user_id = request.GET.get('id', '')
        if not user_id:
            return HttpResponseRedirect(reverse('index'))
        user = get_object(User, id=user_id)
        if user:
            groups_str = ','.join(
                [str(group.id) for group in user.group.all()])
            admin_groups_str = ' '.join([
                str(admin_group.group.id)
                for admin_group in user.admingroup_set.all()
            ])
            is_super = True if user.role == 'SU' else False
            rest['Id'] = user.id
            rest['username'] = user.username
            rest['password'] = user.password
            rest['email'] = user.email
            rest['is_active'] = user.is_active
            rest['user_group'] = groups_str
            rest['is_super'] = is_super
            return HttpResponse(json.dumps(rest),
                                content_type='application/json')
    else:
        response = {'success': False, 'error': ''}
        try:
            user_id = request.GET.get('id', '')
            user = User.objects.get(id=int(user_id))
            username = request.POST.get('username', '')
            password = request.POST.get('password', '')
            email = request.POST.get('email', '')
            groups = request.POST.getlist('groups', [])
            role_post = request.POST.get('role', 'CU')
            admin_groups = request.POST.getlist('admin_groups', [])
            extra = request.POST.getlist('extra', [])
            is_active = False if '0' in extra else True
            email_need = True if '1' in extra else False
            user_role = {'SU': u'超级管理员', 'GA': u'部门管理员', 'CU': u'普通用户'}

            if not user:
                res['flag'] = 'false'
                res['content'] = u'用户不存在!'
                res['emer_satus'] = u"编辑用户失败:{1}".format(u'用户不存在!')
                response['error'] = u"编辑用户失败:{1}".format(u'用户不存在!')

            username_old = user.username
            if username_old == username:
                if len(User.objects.filter(username=username)) > 1:
                    raise ServerError(u'用户已存在')
            else:
                if len(User.objects.filter(username=username)) > 0:
                    raise ServerError(u'用户已存在')

            db_update_user(user_id=user_id,
                           username=username,
                           password=password,
                           email=email,
                           groups=groups,
                           admin_groups=admin_groups,
                           role=role_post,
                           is_active=is_active)

            res['content'] = u'编辑用户%s' % username_old
            res['emer_status'] = u"编辑用户[{0}]成功".format(username_old)
            response['success'] = True
            response['error'] = res['emer_status']
            if email_need:
                emsg = u"""
                Hi %s:
                    您的信息已修改,请登录MagicStack查看详细信息
                    地址:%s
                    用户名: %s
                    密码:%s (如果密码为None代表密码为原密码)
                    权限::%s

                """ % (user.username, URL, user.username, password,
                       user_role.get(role_post, u''))

                if not default_email:
                    error = u"没有邮件服务器信息,请先到告警管理配置邮件服务器,谢谢!"
                    return HttpResponse(error)
                rest_send_mail = send_email(default_email, u'您的信息已修改', [email],
                                            emsg)
                if rest_send_mail['msgCode'] == 1:
                    response['success'] = False
                    response['error'] = u"发送邮件失败:请查找原因"
        except Exception as e:
            logger.error(e)
            res['flag'] = 'false'
            error_info = u"编辑用户{0}失败:{1}".format(username_old, e.message)
            res['content'] = res['emer_status'] = response[
                'error'] = error_info
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
Exemplo n.º 8
0
def user_edit(request,res, *args):
    res['operator'] = u'编辑用户'
    res['emer_content'] = 1
    if request.method == 'GET':
        rest = {}
        user_id = request.GET.get('id', '')
        if not user_id:
            return HttpResponseRedirect(reverse('index'))
        user = get_object(User, id=user_id)
        if user:
            groups_str = ','.join([str(group.id) for group in user.group.all()])
            admin_groups_str = ' '.join([str(admin_group.group.id) for admin_group in user.admingroup_set.all()])
            is_super = True if user.role == 'SU' else False
            rest['Id'] = user.id
            rest['username'] = user.username
            rest['password'] = user.password
            rest['email'] = user.email
            rest['is_active'] = user.is_active
            rest['user_group'] = groups_str
            rest['is_super'] = is_super
            return HttpResponse(json.dumps(rest), content_type='application/json')
    else:
        response = {'success': False, 'error': ''}
        try:
            user_id = request.GET.get('id', '')
            user = User.objects.get(id=int(user_id))
            username = request.POST.get('username','')
            password = request.POST.get('password', '')
            email = request.POST.get('email', '')
            groups = request.POST.getlist('groups', [])
            role_post = request.POST.get('role', 'CU')
            admin_groups = request.POST.getlist('admin_groups', [])
            extra = request.POST.getlist('extra', [])
            is_active = False if '0' in extra else True
            email_need = True if '1' in extra else False
            user_role = {'SU': u'超级管理员', 'GA': u'部门管理员', 'CU': u'普通用户'}

            if not user:
                res['flag'] = 'false'
                res['content'] = u'用户不存在!'
                res['emer_satus'] = u"编辑用户失败:{1}".format(u'用户不存在!')
                response['error'] = u"编辑用户失败:{1}".format(u'用户不存在!')

            username_old = user.username
            if username_old == username:
                if len(User.objects.filter(username=username)) > 1:
                    raise ServerError(u'用户已存在')
            else:
                if len(User.objects.filter(username=username)) > 0:
                    raise ServerError(u'用户已存在')

            db_update_user(user_id=user_id,
                           username=username,
                           password=password,
                           email=email,
                           groups=groups,
                           admin_groups=admin_groups,
                           role=role_post,
                           is_active=is_active)

            res['content'] = u'编辑用户%s' % username_old
            res['emer_status'] = u"编辑用户[{0}]成功".format(username_old)
            response['success'] = True
            response['error'] = res['emer_status']
            if email_need:
                emsg = u"""
                Hi %s:
                    您的信息已修改,请登录MagicStack查看详细信息
                    地址:%s
                    用户名: %s
                    密码:%s (如果密码为None代表密码为原密码)
                    权限::%s

                """ % (user.username, URL, user.username, password, user_role.get(role_post, u''))

                if not default_email:
                    error = u"没有邮件服务器信息,请先到告警管理配置邮件服务器,谢谢!"
                    return HttpResponse(error)
                rest_send_mail = send_email(default_email, u'您的信息已修改',[email], emsg)
                if rest_send_mail['msgCode'] == 1:
                    response['success'] = False
                    response['error'] = u"发送邮件失败:请查找原因"
        except Exception as e:
            logger.error(e)
            res['flag'] = 'false'
            error_info = u"编辑用户{0}失败:{1}".format(username_old ,e.message)
            res['content'] = res['emer_status'] = response['error'] = error_info
        return HttpResponse(json.dumps(response), content_type='application/json')