00001: Imports Microsoft.VisualBasic
00002: Imports System.Web.Security
00003: Imports System
00004: Imports System.Web
00005: Imports System.Web.Profile
00006: 
00007: ''' <summary>
00008: ''' Это базовый класс сайта, добавляюющий к стандартному классу странички пару свойств
00009: ''' Иcпользуется на всех персональных страничках (при постбеках и нет) - требуется эта проверка корректности номера юзера (к кому заходим), заданного в Request.QueryString("i")
00010: ''' Просто определить тут WEB-контролы низзя - перестанут работать все диалоговые инструменты студии и привязки в SqlDataSource
00011: ''' </summary>
00012: ''' 
00013: 
00014: Public Enum RequestType
00015:     AuUserToHimself = 1             'залогинившийся юзер зашел сам к себе  
00016:     AuUserToOtherActive = 2         'залогинившийся юзер зашел к другому c активированным логином
00017:     AuUserToOtherInActive = 3       'залогинившийся юзер зашел к другому с НЕактивированным логином
00018:     AnonUserToActive = 4            'анонимный юзер зашел к другому с активированным логином
00019:     AnonUserToInActive = 5          'анонимный юзер зашел к другому с НЕактивированным логином
00020: End Enum
00021: 
00022: Public Class VotpuskBasePage
00023:     Inherits System.Web.UI.Page
00024:     ''' <summary>
00025:     ''' Это ссылка на шифровалку параметров
00026:     ''' </summary>
00027:     Public ReadOnly Property PP8() As VBNET2000.ParmProtector8
00028:         Get
00029:             Return CType(Application("ParmProtector8"), VBNET2000.ParmProtector8)
00030:         End Get
00031:     End Property
00032: 
00033:     Dim _TypeOfPageLoad As RequestType
00034:     ''' <summary>
00035:     ''' Это тип загрузки странички этого сайта
00036:     ''' </summary>
00037:     Public ReadOnly Property QueryString_TypeOfPageLoad() As RequestType
00038:         Get
00039:             Return _TypeOfPageLoad
00040:         End Get
00041:     End Property
00042: 
00043:     Dim _ToUser As MembershipUser
00044:     ''' <summary>
00045:     ''' К какому юзеру входим по QueryString (рассчитывается функцией CheckRequest)
00046:     ''' </summary>
00047:     Public ReadOnly Property QueryString_User() As MembershipUser
00048:         Get
00049:             Return _ToUser
00050:         End Get
00051:     End Property
00052: 
00053:     Dim _ToUserProfile As ProfileCommon
00054:     ''' <summary>
00055:     ''' Это профиль юзера к которому заходим по Querystring
00056:     ''' </summary>
00057:     Public ReadOnly Property QueryString_UserProfile() As ProfileCommon
00058:         Get
00059:             Return _ToUserProfile
00060:         End Get
00061:     End Property
00062: 
00063:     Dim _QueryString_UserName As String
00064:     ''' <summary>
00065:     ''' Имя юзера к кому зашли по QueryString
00066:     ''' </summary>
00067:     Public ReadOnly Property QueryString_UserName() As String
00068:         Get
00069:             Return _QueryString_UserName
00070:         End Get
00071:     End Property
00072: 
00073:     Dim _QueryString_g As String
00074:     ''' <summary>
00075:     ''' QueryString("g") в расшифрованном виде
00076:     ''' </summary>
00077:     Public ReadOnly Property QueryString_g() As String
00078:         Get
00079:             Return _QueryString_g
00080:         End Get
00081:     End Property
00082: 
00083:     Dim _QueryString_t As String
00084:     ''' <summary>
00085:     ''' QueryString("t") в расшифрованном виде
00086:     ''' </summary>
00087:     Public ReadOnly Property QueryString_t() As String
00088:         Get
00089:             Return _QueryString_t
00090:         End Get
00091:     End Property
00092: 
00093:     Dim _QueryString_j As String
00094:     ''' <summary>
00095:     ''' QueryString("j") в расшифрованном виде
00096:     ''' </summary>
00097:     Public ReadOnly Property QueryString_j() As String
00098:         Get
00099:             Return _QueryString_j
00100:         End Get
00101:     End Property
00102: 
00103: 
00104:     Private Sub VotpuskBasePage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
00105:         'сначала заполнили базовые свойства странички _ToUser,TypeOfPageLoad
00106:         Session("CheckRequest") = CheckRequest(IsPostBack)
00107:         _TypeOfPageLoad = CType(Session("CheckRequest"), RequestType)
00108:         If _ToUser IsNot Nothing Then _QueryString_UserName = _ToUser.UserName
00109:         'теперь, если в Querystring заданы g, t, j - впишем их в hidentype-контролы странички в расшифрованном виде
00110:         If Request.QueryString("g") <> "" Then _QueryString_g = VBNET2000.PP8_Helper.Unmask_QueryString("g", "SQLServer_ConnectionStrings") 'номер в табле GroupName
00111:         If Request.QueryString("t") <> "" Then _QueryString_t = VBNET2000.PP8_Helper.Unmask_QueryString("t", "SQLServer_ConnectionStrings") 'номер в табле LoadType
00112:         If Request.QueryString("j") <> "" Then _QueryString_j = VBNET2000.PP8_Helper.Unmask_QueryString("j", "SQLServer_ConnectionStrings") 'номер в табле UserData
00113:     End Sub
00114: 
00115:     ''' <summary>
00116:     ''' Проверка типа входа - к себе/не к себе. 
00117:     ''' Отрезает совсем левые входы с подделанным или пустым номером юзера
00118:     ''' </summary>
00119:     Private Function CheckRequest(ByVal IsPostback As Boolean) As RequestType
00120:         If HttpContext.Current.Request.QueryString("i") = "" Then
00121:             If HttpContext.Current.User.Identity.IsAuthenticated Then
00122:                 'аутентифицированного юзера перенаправляем к себе же на страничку
00123:                 My.Log.WriteEntry("1. Error. Не задан QueryString('i'). Аутентифицированного юзера перенаправляем к себе же на страничку. IsPostback=" & IsPostback.ToString)
00124:                 HttpContext.Current.Response.Redirect([GoTo].UserHomePage)
00125:             Else
00126:                 'левый вход непонятно кого и непонятно к кому
00127:                 My.Log.WriteEntry("2. Error. Не задан QueryString('i'). Левый вход неаутентифицированного непонятно к кому. Направляем на NotSupported. IsPostback=" & IsPostback.ToString)
00128:                 HttpContext.Current.Response.Redirect([GoTo].NotSupported & "?ErrorMessage=""Не задан QueryString('i'). Левый вход неаутентифицированного непонятно к кому""&URL=""" & Request.RawUrl & """")
00129:             End If
00130:         Else
00131:             'вход к конкретно заданному юзеру
00132:             Try
00133:                 Dim ToGuid As New Guid(HttpContext.Current.Request.QueryString("i"))
00134:                 If Membership.GetUser(ToGuid) Is Nothing Then
00135:                     If HttpContext.Current.User.Identity.IsAuthenticated Then
00136:                         'аутентифицированного юзера перенаправляем к себе же на страничку
00137:                         My.Log.WriteEntry("3. Error. Не найден юзер по заданному GUID. Аутентифицированного юзера перенаправляем к себе же на страничку. IsPostback=" & IsPostback.ToString)
00138:                         HttpContext.Current.Response.Redirect([GoTo].UserHomePage)
00139:                     Else
00140:                         'левый вход непонятно кого и непонятно к кому
00141:                         My.Log.WriteEntry("4. Error. Не получилось сделать GUID по заданному QueryString('i'). " & HttpContext.Current.Request.QueryString("i") & " Левый вход неаутентифицированного непонятно к кому. Направляем на NotSupported. IsPostback=" & IsPostback.ToString)
00142:                         HttpContext.Current.Response.Redirect([GoTo].NotSupported & "?ErrorMessage=""Не получилось сделать GUID по заданному QueryString('i')""&URL=""" & Request.RawUrl & """")
00143:                     End If
00144:                 Else
00145:                     'запрошенный юзер СУЩЕСТВУЕТ - идем дальше
00146:                     _ToUser = Membership.GetUser(ToGuid)
00147:                 End If
00148:             Catch ex As Exception
00149:                 If HttpContext.Current.User.Identity.IsAuthenticated Then
00150:                     'аутентифицированного юзера перенаправляем к себе же на страничку
00151:                     My.Log.WriteEntry("5. Error. Не получилось сделать GUID по заданному QueryString('i') =" & HttpContext.Current.Request.QueryString("i") & " Аутентифицированного юзера перенаправляем к себе же на страничку. IsPostback=" & IsPostback.ToString)
00152:                     HttpContext.Current.Response.Redirect([GoTo].UserHomePage)
00153:                 Else
00154:                     'левый вход непонятно кого и непонятно к кому
00155:                     My.Log.WriteEntry("6. Error. Не получилось сделать GUID по заданному QueryString('i'). " & HttpContext.Current.Request.QueryString("i") & " Левый вход неаутентифицированного непонятно к кому. Направляем на NotSupported. IsPostback=" & IsPostback.ToString)
00156:                     HttpContext.Current.Response.Redirect([GoTo].NotSupported & "?ErrorMessage=""Не получилось сделать GUID по заданному QueryString('i')""&URL=""" & Request.RawUrl & """")
00157:                 End If
00158:             End Try
00159:             If _ToUser Is Nothing Then
00160:                 My.Log.WriteEntry("7. Error. Так и не получили имени юзера по QueryString('i') =" & HttpContext.Current.Request.QueryString("i") & " Аутентифицированного юзера перенаправляем к себе же на страничку. IsPostback=" & IsPostback.ToString)
00161:                 'аутентифицированного юзера перенаправляем к себе же на страничку
00162:                 HttpContext.Current.Response.Redirect([GoTo].UserHomePage)
00163:             End If
00164:             Try
00165:                 _ToUserProfile = ProfileBase.Create(_ToUser.UserName)
00166:             Catch ex As Exception
00167:                 My.Log.WriteEntry("8. Error. Не прочитался профиль юзера " & HttpContext.Current.Request.QueryString("i"))
00168:             End Try
00169:             If HttpContext.Current.User.Identity.IsAuthenticated Then
00170:                 If HttpContext.Current.Request.QueryString("i") = Membership.GetUser(HttpContext.Current.User.Identity.Name).ProviderUserKey.ToString Then
00171:                     My.Log.WriteEntry("AuUserToHimself. Аутентифицированный юзер '" & HttpContext.Current.User.Identity.Name & "' зашел к себе. IsPostback=" & IsPostback.ToString)
00172:                     Return RequestType.AuUserToHimself
00173:                 Else
00174:                     If _ToUserProfile.LoginIsActivate Then
00175:                         My.Log.WriteEntry("AuUserToOtherActive. Аутентифицированный юзер '" & HttpContext.Current.User.Identity.Name & "' зашел на страничку другого юзера " & HttpContext.Current.Request.QueryString("i") & " c активированным логином. IsPostback=" & IsPostback.ToString)
00176:                         Return RequestType.AuUserToOtherActive
00177:                     Else
00178:                         My.Log.WriteEntry("AuUserToOtherInActive. Аутентифицированный юзер '" & HttpContext.Current.User.Identity.Name & "' зашел на страничку другого юзера " & HttpContext.Current.Request.QueryString("i") & " c Неактивированным логином. IsPostback=" & IsPostback.ToString)
00179:                         Return RequestType.AuUserToOtherInActive
00180:                     End If
00181:                 End If
00182:             Else
00183:                 If _ToUserProfile.LoginIsActivate Then
00184:                     My.Log.WriteEntry("AnonUserToActive. Неаутифицированный юзер зашел посмотреть страничку конкретного юзера " & HttpContext.Current.Request.QueryString("i") & " c активированным логином. IsPostback=" & IsPostback.ToString)
00185:                     Return RequestType.AnonUserToActive
00186:                 Else
00187:                     My.Log.WriteEntry("AnonUserToInActive. Неаутифицированный юзер зашел посмотреть страничку конкретного юзера " & HttpContext.Current.Request.QueryString("i") & " c Неактивированным логином. IsPostback=" & IsPostback.ToString)
00188:                     Return RequestType.AnonUserToInActive
00189:                 End If
00190:             End If
00191:         End If
00192:     End Function
00193: End Class


Comments ( )
Link to this page: //www.vb-net.com/asp2/35/11.htm
< THANKS ME>