• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

авторизация клиентов через веб

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Стоит задача сделать авторизацию клиентов через веб - там они и регистрируются и авторизируются
Какой путь выбрать?
Как сделать, чтобы они не имели доступ к тем базам к которым имеет основная АК?
 

NetWood

Lotus Team
17.04.2008
558
94
BIT
101
1. Подключение da. В ней легкая кастомизация, чтоб работали группы https://codeby.net/threads/dopolnitelnaja-avtorizacija-po-gruppe-v-directory-assistance.66287/
2. Всем Базам default нет доступа.
3. domcfg default Читатель чтоб его формы логина открывались если что.
4. В базе указанной в da.nsf сделать группы по имени сайта, например DA_sitename
5. В базе сайта default нет доступа, Anonymous читатель или автор если добавляет в корзину, группа DA_sitename для загеганных
6. В эти группы делать агентом авторег юзеров из веба с рефрешем $Users (этот агент есть в базе dombulletin на openntf - постил многократно)
7. Ну и jQuery на форме Регистрации и Логина пароля
JavaScript:
$(function(){
    doLoadCapcha();

    var lform = "#Login";
    $( lform ).trigger("reset");
    $( lform ).submit( function(e) {
            var flogin = $( lform ).serialize(); //тут завернутый Username=123&password=123&redirectto=
            $( '#loadmsg' ).hide();
            $.ajax({
                   async : false,
                   cache: false,
                    type: 'post',
                    url: 'names.nsf?login',
                    data: flogin,
                    success: function(data) {
                               var $temp =  $.parseHTML( data );
                            var msg = $($temp).find('#msglogin').html();
                            var dom = $.cookie( 'DomAuthSessId' );
                            //console.log( dom );                            
                        if ( !dom) {          
                                if ( msg ) { $( '#loadmsg' ).fadeIn().html("<div class='msgtext box'>"+msg+"</div>") };
                                $( lform ).trigger("reset");
                             } else {
                               $( '#loadmsg' ).fadeIn().html("<div class='msgtext box'>Login successfull</div>");
                                  location.reload();
                              }
                         }
            });
            e.preventDefault();
    });

    var form = "#Registration";
    $( form ).validate({
        // Specify the validation rules
        rules: {
            Pseudo: {
                    required: true
                },
            Username: {
                required: true,
                email: true,
                forbidden: true,
                regemail: true    
            },
            Password: {
                required: true,
                minlength: 1
            },
             Captcha: {
                required: true
            }
        },
        // Specify the validation error messages
        messages: {
            Username: {
                     required:  "В этом поле нужен адрес электронной почты для обратной связи",
                     email: "Email должен быть в правильнои формате",
                    forbidden: "Такой email запрещен",
                     regemail: "Такой email уже зарегистрирован"
            },
            Captcha: {
                    required:  "Какому числу равно выражение в поле?"
            }
        },
        submitHandler: function(form) {
            //form.submit();
            $( '#Status' ).val('reg'); //check Submit in agent
             var formcontent = $( form ).serialize(); // serializes the form elements such Notes form! Set ctx = ns.DocumentContext   
                  $.post({
                        url: 'person?create',            
                        cache: false,
                        data: formcontent,
                        dataType: "html", //also in agent     Print |Content-type: text/html; charset=utf-8|
                        success: function( resp ){
                            if ( doCheckCapcha() ) {
                                var data = JSON.parse(resp);
                                if ( data.status == 'reg' ) {
                                    $( '#Password' ).val('');
                                    if ($("#Captcha").is(':visible')) { doLoadCapcha('999') }; //новая капча в этой сессии !!!
//some do
                                    $( '#registration_load' ).hide().fadeIn().html("<div class='box'><b>Выполнено</b></div>").fadeOut(3000,     function(){
                                        $( '#registration_load' ).hide();
                                    });
                                    } else {
                                    $( '#registration_load' ).html(resp);
                                }
                            }
                        }
                    });  
        }
    });
});

//check email уже есть
jQuery.validator.addMethod("regemail", (function() {
  var isEmailValid;
  isEmailValid = false;
  var url = 'doLookup?open&email=' + $("#Username").val();
  $.ajax({
    cache: false,
    url: url,
    type: 'post',
    datatype: "application/json",
    async: false,
    success: function(resp) {
       if (resp.regemail === 1) {
        isEmailValid = false;
      } else {
        isEmailValid = true;
      }
    }
  });
  return isEmailValid;
}), "");

//check запрещенный email
jQuery.validator.addMethod("forbidden", (function() {
  var isEmailValid;
  isEmailValid = false;
  var url = 'doLookup?open&email=' + $("#Username").val();
  $.ajax({
    cache: false,
    url: url,
    type: 'post',
    datatype: "application/json",
    async: false,
    success: function(resp) {
       if (resp.forbidden === 1) {
        isEmailValid = false;
      } else {
        isEmailValid = true;
      }
    }
  });
  return isEmailValid;
}), "");

В <span id="msglogin"><Вычисляемое значение></span>
Завернуты стандартные собаки
Код:
sDefault         := "Please identify yourself";
sLogoff            :="[<a href='?logout'>LogOut</a>]";    "добавлено 2019-12-09";
sNotEnough    := "%1, you are not authorized to access %2." + @NewLine + @NewLine + "Please "+sLogoff+" or sign in with a name which has sufficient access rights";
sInvalid        := "You provided an invalid username or password." + @NewLine + @NewLine + "Please sign in again";
sExpired        := "Your login has expired. Please sign in again";
sOutOfSync    := "%1, your login has been invalidated due to a timing issue with the login servers." + @NewLine + @NewLine + "(The servers may need to have their clocks synchronized to resolve this.)" + @NewLine + @NewLine + "Please sign in again";
sLockedOrInvalid    := "You are locked out, or you have provided an invalid username or password." + @NewLine + @NewLine + "Please sign in again:";

"---DNT---";

User    := @ProperCase(@Name([CN]; @UserName));
URL    := @Right(redirectTo; "/");
URL    := @If(@Contains(URL; "?"); @Left(URL; "?"); URL);

List    := User:URL;
@For(n:=1; n<=@Elements(List); n:=n+1;
sNotEnough := @ReplaceSubstring(sNotEnough; "%" + @Text(n); List[n]);
sOutOfSync := @ReplaceSubstring(sOutOfSync; "%" + @Text(n); List[n])
);

@If(    reasonType = "0"; sDefault;
    reasonType = "1"; sNotEnough;
    reasonType = "2"; sInvalid;
    reasonType = "3"; sExpired;
    reasonType = "4"; sOutOfSync;
    reasonType = "5"; sLockedOrInvalid;
    sDefault
)
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!