2004-06-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / System.Web / System.Web.Security / FormsAuthenticationTicket.cs
1 //
2 // System.Web.Security.FormsAuthenticationTicket
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@ximian.com)
6 //
7 // (C) 2002 Ximian, Inc (http://www.ximian.com)
8 //
9
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30
31 using System;
32
33 namespace System.Web.Security
34 {
35         [Serializable]
36         public sealed class FormsAuthenticationTicket
37         {
38                 int version;
39                 string name;
40                 DateTime issueDate;
41                 DateTime expiration;
42                 bool isPersistent;
43                 string userData;
44                 string cookiePath;
45
46                 public FormsAuthenticationTicket (int version,
47                                                   string name,
48                                                   DateTime issueDate,
49                                                   DateTime expiration,
50                                                   bool isPersistent,
51                                                   string userData)
52                 {
53                         this.version = version;
54                         this.name = name;
55                         this.issueDate = issueDate;
56                         this.expiration = expiration;
57                         this.isPersistent = isPersistent;
58                         this.userData = userData;
59                         this.cookiePath = "/";
60                 }
61
62                 public FormsAuthenticationTicket (int version,
63                                                   string name,
64                                                   DateTime issueDate,
65                                                   DateTime expiration,
66                                                   bool isPersistent,
67                                                   string userData,
68                                                   string cookiePath)
69                 {
70                         this.version = version;
71                         this.name = name;
72                         this.issueDate = issueDate;
73                         this.expiration = expiration;
74                         this.isPersistent = isPersistent;
75                         this.userData = userData;
76                         this.cookiePath = cookiePath;
77                 }
78
79                 public FormsAuthenticationTicket (string name, bool isPersistent, int timeout)
80                 {
81                         this.version = 1;
82                         this.name = name;
83                         this.issueDate = DateTime.Now;
84                         this.isPersistent = isPersistent;
85                         if (isPersistent)
86                                 expiration = issueDate.AddYears (50);
87                         else
88                                 expiration = issueDate.AddMinutes ((double) timeout);
89
90                         this.userData = String.Empty;
91                         this.cookiePath = "/";
92                 }
93
94                 internal void SetDates (DateTime issueDate, DateTime expiration)
95                 {
96                         this.issueDate = issueDate;
97                         this.expiration = expiration;
98                 }
99                 
100                 internal FormsAuthenticationTicket Clone ()
101                 {
102                         return new FormsAuthenticationTicket   (version,
103                                                                 name,
104                                                                 issueDate,
105                                                                 expiration,
106                                                                 isPersistent,
107                                                                 userData,
108                                                                 cookiePath);
109                 }
110
111                 public string CookiePath
112                 {
113                         get {
114                                 return cookiePath;
115                         }
116                 }
117
118                 public DateTime Expiration
119                 {
120                         get {
121                                 return expiration;
122                         }
123                 }
124
125                 public bool Expired
126                 {
127                         get {
128                                 return DateTime.Now > expiration;
129                         }
130                 }
131
132                 public bool IsPersistent
133                 {
134                         get {
135                                 return isPersistent;
136                         }
137                 }
138
139                 public DateTime IssueDate
140                 {
141                         get {
142                                 return issueDate;
143                         }
144                 }
145
146                 public string Name
147                 {
148                         get {
149                                 return name;
150                         }
151                 }
152
153                 public string UserData
154                 {
155                         get {
156                                 return userData;
157                         }
158                 }
159
160                 public int Version
161                 {
162                         get {
163                                 return version;
164                         }
165                 }
166         }
167 }
168