Ejemplo n.º 1
0
def add_remove_ad_group(request, username=None, add_group=True):
    """
    Add/Remove the groups from specified username
    :param request:
    :param username:
    :param add_group:
    :return:
    """
    #get the list of group from html
    groups = request.POST.getlist('groups')
    try:
        ad.add_remove_ad_groups(db_service.get_local_ad(), username, groups,
                                add_group)
    except Exception as e:
        return list_active_directory_group(request,
                                           username,
                                           error_message=e.message)

    user = db_service.get_user(username)
    fullname = user.full_name.split()
    subject = "SOL: add/remove in AD Group"
    add_remove = "assigned " if add_group else "unassigned "
    group_info = tabulate(["Group Name : ", groups])
    message = "Hi " + fullname[0] + ", \n\tYour account's AD configuration has been modified, you are " + add_remove + \
              " to below groups.\n" + group_info + "\nPlease contact Administrator in case of any issue.\n\n"
    sol_email.send_mail(receiver=user.email_id,
                        subject=subject,
                        message=message)

    return list_active_directory_group(
        request, username, message="Groups processed successfully.")
Ejemplo n.º 2
0
def delete_user(request, username=None):
    """
    Delete user from AD as well as from SOL db
    :param request
    :param username wants ro delete
    :return render to list_users page with message or error_message
    """
    # pass username with local ad details to delete user from AD
    try:
        ad.delete_user(db_service.get_local_ad(), username)
    except Exception as e:
        list_sol_users(request, error_message=e.message)
    #delete the user from SOL database
    user = db_service.delete_user(username)

    fullname = user.full_name.split()
    subject = 'Thank you for using ServiceOnline'
    message = "Hi " + fullname[0] + ",\n\tRecently your account has been deleted from ServiceOnline, now you " \
                                    "will not be able to access ServiceOnline. Thank you for using our services. " \
                                    "In case if you again want access of ServiceOnline, please get in touch with " \
                                    "Administrator."
    sol_email.send_mail(receiver=user.email_id,
                        subject=subject,
                        message=message)

    return list_sol_users(request, message="User deleted successfully.")
Ejemplo n.º 3
0
def change_user_status(request, username=None):
    """
      Change AD user's status i.e activate or deactivate
       Change the active flag form SOL db
        :param request
        :param username wants to create it in AD
        :return render to list_users page with message or error_message
    """
    # pass username and local ad details to change the AD user's status
    try:
        ad.change_status(db_service.get_local_ad(), username)
    except Exception as e:
        list_sol_users(request,
                       error_message="Unable to (de)active user due to : " +
                       e.message)
    # change that user status from SOL database
    db_service.change_user_status(username)
    user = db_service.get_user(username)
    fullname = user.full_name.split()
    subject = 'SOL: Activation/Deactivation from SOL'
    user_status = "Successfully Activated" if user.active else "Successfully Deactivated"
    message = "Hi " + fullname[0] + ",\n\tYour account has been " + user_status + \
              ", Please contact Administrator in case of any issue."
    sol_email.send_mail(receiver=user.email_id,
                        subject=subject,
                        message=message)
    return list_sol_users(request, message="User (de)activated successfully.")
Ejemplo n.º 4
0
def active_directory_configuration(request):
    # in case if it's GET request redirect to active directory template with AD details if any.
    message = None
    if request.method == constants.GET:
        # if ad details are already stored in db then it should able to see, so we render this details to AD_template
        local_active_directory = db_service.get_local_ad()
        auth_active_directory = db_service.get_auth_ad()
    else:
        #store local AD details in SOL DB
        local_active_directory = {
            constants.LOCAL_AD_HOST: request.POST[constants.LOCAL_AD_HOST],
            constants.LOCAL_AD_PORT: request.POST[constants.LOCAL_AD_PORT],
            constants.LOCAL_AD_DN: request.POST[constants.LOCAL_AD_DN],
            constants.LOCAL_AD_DOMAIN: request.POST[constants.LOCAL_AD_DOMAIN],
            constants.LOCAL_AD_USERNAME:
            request.POST[constants.LOCAL_AD_USERNAME],
            constants.LOCAL_AD_PASSWORD:
            request.POST[constants.LOCAL_AD_PASSWORD]
        }

        db_service.store_local_ad(local_active_directory)
        # store auth AD details in SOL DB
        auth_active_directory = {
            constants.AUTH_AD_HOST: request.POST[constants.AUTH_AD_HOST],
            constants.AUTH_AD_PORT: request.POST[constants.AUTH_AD_PORT],
            constants.AUTH_AD_DN: request.POST[constants.AUTH_AD_DN],
            constants.AUTH_AD_DOMAIN: request.POST[constants.AUTH_AD_DOMAIN],
            constants.AUTH_AD_USERNAME:
            request.POST[constants.AUTH_AD_USERNAME],
            constants.AUTH_AD_PASSWORD:
            request.POST[constants.AUTH_AD_PASSWORD],
        }
        db_service.store_auth_ad(auth_active_directory)
        # store_ad_in_session(request, local_active_directory)
        message = "AD Details Saved Successfully"

    return render(
        request, constants.ACTIVE_DIRECTORY_TEMPLATE, {
            'auth_ad': auth_active_directory,
            'local_ad': local_active_directory,
            constants.MESSAGE: message
        })
Ejemplo n.º 5
0
def list_active_directory_group(request,
                                username=None,
                                message=None,
                                error_message=None):
    """
    List all the groups from local AD, and if username is given it will list groups accordingly
    :param request:
    :param username:
    :param message:
    :param error_message:
    :return:
    """
    # get the user details
    user_detail = db_service.get_user(username)
    #get AD details
    active_directory = db_service.get_local_ad()
    # pass AD details to load all groups from AD
    try:
        all_groups = ad.load_all_groups(active_directory)
    except Exception as e:
        return render(request, constants.ACTIVE_DIRECTORY_GROUP_TEMPLATE, {
            constants.ERROR_MESSAGE: e.message,
            'user_detail': user_detail
        })
    # pass user details and AD details to load groups from AD which user is added
    try:
        user_groups = ad.load_all_groups(active_directory, username)
    except Exception as e:
        return render(request, constants.ACTIVE_DIRECTORY_GROUP_TEMPLATE, {
            constants.ERROR_MESSAGE: e.message,
            'user_detail': user_detail
        })

    return render(
        request, constants.ACTIVE_DIRECTORY_GROUP_TEMPLATE, {
            'user_detail': user_detail,
            'all_groups': all_groups,
            'user_groups': user_groups,
            constants.MESSAGE: message,
            constants.ERROR_MESSAGE: error_message
        })
Ejemplo n.º 6
0
def create_user(request):
    """
    create user method is used to create a user in AD and in sol db.
    GET request will load the template and POST request will create a user.
    :param request:
    :return:
    """
    # in case if it's GET request redirect to create user page.
    if request.method == constants.GET:
        return render(request, constants.CREATE_USER_TEMPLATE)
    try:
        # get user details from auth AD and pass username
        user_detail = ad.retrieve_user_details(db_service.get_auth_ad(),
                                               request.POST["id"])

        user_detail[constants.USER_PASSWORD] = request.POST["new_password"]
        # pass the user's details taken from auth AD to create user in local AD
        ad.create_user(db_service.get_local_ad(), user_detail)
    except Exception as e:
        return list_sol_users(request, error_message=str(e))
    # add that created user in SOL database
    db_service.create_user(user_detail)

    subject = " User(created): Welcome to ServiceOnline."
    users_information_table = tabulate(
        [["Name : ", user_detail[constants.USER_FULL_NAME]],
         ["EmailAddress : ", user_detail[constants.USER_EMAIL]],
         ["Username : "******"Password:"******"Hi " + fname + ", \n\tWelcome to ServiceOnline. \nRecently Administrator created your account on " \
                              "ServiceOnline. Please find the access details below, \n\n" + users_information_table + \
              "\n\nIn case of any access related issue, please get in touch with Administrator."
    sol_email.send_mail(receiver=user_detail[constants.USER_EMAIL],
                        subject=subject,
                        message=message)

    return list_sol_users(request, message="User created successfully.")
Ejemplo n.º 7
0
def change_password(request):
    if request.method == constants.GET:
        return render(request, constants.CHANGE_PASSWORD_TEMPLATE)

    username = request.session[constants.USER][constants.USERNAME]
    old_password = request.POST['old_password']
    new_password = request.POST['new_password']

    if constants.IS_DJANGO_ADMIN in request.session:
        try:
            ad.sol_authentication(username, old_password)
        except Exception as e:
            return render(request, constants.CHANGE_PASSWORD_TEMPLATE,
                          {constants.ERROR_MESSAGE: e.message})
        db_service.change_password(username, new_password)
    else:
        try:
            ad.change_password(db_service.get_local_ad(), username,
                               old_password, new_password)
        except Exception as e:
            return render(request, constants.CHANGE_PASSWORD_TEMPLATE,
                          {constants.ERROR_MESSAGE: e.message})
    return render(request, constants.CHANGE_PASSWORD_TEMPLATE,
                  {constants.MESSAGE: "Password changed successfully."})