Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Linnea Samila
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 985936b9
authored
Jul 29, 2015
by
Juho Juopperi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Storing EventUser's QR code in database.
1 parent
5c961ce1
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
90 additions
and
45 deletions
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/BarcodeBeanLocal.java
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/UserBeanLocal.java
code/moya-beans/ejbModule/fi/codecrew/moya/beans/BarcodeBean.java
code/moya-beans/ejbModule/fi/codecrew/moya/beans/BootstrapBean.java
code/moya-beans/ejbModule/fi/codecrew/moya/beans/TicketBean.java
code/moya-beans/ejbModule/fi/codecrew/moya/beans/UserBean.java
code/moya-beans/ejbModule/fi/codecrew/moya/facade/EventUserFacade.java
code/moya-database/src/main/java/fi/codecrew/moya/model/EventUser.java
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/BarcodeBeanLocal.java
View file @
985936b
...
...
@@ -51,8 +51,6 @@ public interface BarcodeBeanLocal {
public
EventUser
getUserFromTextCode
(
String
textcode
);
public
String
getUserLongTextCode
(
EventUser
user
);
public
EventUser
getUserFromLongTextCode
(
String
textcode
);
public
Product
getProduct
(
String
barcode
);
...
...
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/UserBeanLocal.java
View file @
985936b
...
...
@@ -192,4 +192,11 @@ public interface UserBeanLocal {
* @return List of moya -surperusers
*/
List
<
User
>
findSuperusers
();
/**
* There is a textcode type that looks up the code in EventUser object. Do the lookup.
* @param code
* @return EventUser with the matching code
*/
EventUser
findUserByCodeToken
(
String
code
);
}
code/moya-beans/ejbModule/fi/codecrew/moya/beans/BarcodeBean.java
View file @
985936b
...
...
@@ -26,6 +26,7 @@ import javax.ejb.EJB;
import
javax.ejb.LocalBean
;
import
javax.ejb.Stateless
;
import
fi.codecrew.moya.utilities.PasswordFunctions
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -50,8 +51,12 @@ public class BarcodeBean implements BarcodeBeanLocal {
private
static
final
String
PRINTED_CARD_TEXTCODEPREFIX
=
"10"
;
private
static
final
String
PLACE_TEXTCODEPREFIX
=
"11"
;
// Code from EventUser ID with symmetric an encryption of a fixed key ;)
private
static
final
String
EVENTUSER_TEXTCODEPREFIX
=
"12"
;
// Code stored in EventUser object in database.
private
static
final
String
EVENTUSER_TOKEN_TEXTCODEPREFIX
=
"13"
;
// DO NOT ACCIDENTLY ADD '=' -char to this list
private
static
final
int
TEXTCODE_ROTATE_COUNT
=
500
;
...
...
@@ -99,20 +104,6 @@ public class BarcodeBean implements BarcodeBeanLocal {
}
@Override
public
String
getUserLongTextCode
(
EventUser
user
)
{
String
textcode
=
getUserTextCode
(
user
,
38
,
16
);
EventUser
user2
=
getUserFromLongTextCode
(
textcode
);
if
(!
user
.
equals
(
user2
))
throw
new
RuntimeException
(
"Koodigenerointivirhe"
);
// TODO: use seculogger or something
return
textcode
;
}
@Override
public
EventUser
getUserFromLongTextCode
(
String
textcode
)
{
// check if it is some url
...
...
@@ -120,25 +111,64 @@ public class BarcodeBean implements BarcodeBeanLocal {
textcode
=
textcode
.
substring
(
textcode
.
lastIndexOf
(
"="
)+
1
);
}
if
(
isEventUserTokenCode
(
textcode
))
{
return
getEventUserFromTokenCode
(
textcode
);
}
return
getUserFromTextCode
(
textcode
,
38
,
16
);
}
/**
* Return the EventUser's textCode or generate one if EventUser has no code yet.
* @param eventUser
* @return
*/
@Override
public
String
getUserTextCode
(
EventUser
user
)
{
String
textcode
=
getUserTextCode
(
user
,
12
,
5
);
EventUser
user2
=
getUserFromTextCode
(
textcode
);
public
String
getUserTextCode
(
EventUser
eventUser
)
{
// Loop and generate new code until a free code is found.
if
(
eventUser
.
getTokenCode
()
==
null
)
{
String
newCode
=
null
;
do
{
newCode
=
PasswordFunctions
.
generateRandomString
(
10
,
BarcodeBeanLocal
.
TEXTCODE_CHARACTER_MAP
);
}
while
(
userBean
.
findUserByCodeToken
(
newCode
)
!=
null
);
logger
.
info
(
"Updating EventUser {} with code {}"
,
eventUser
.
getId
(),
newCode
);
if
(
eventUser
.
getTokenCode
()
!=
null
)
{
throw
new
IllegalStateException
(
"EventUser "
+
eventUser
.
getId
()
+
" had a tokencode already and we attempted to set it! Something is fishy!"
);
}
eventUser
.
setTokenCode
(
newCode
);
eventUser
=
userBean
.
mergeChanges
(
eventUser
);
}
if
(!
user
.
equals
(
user2
))
throw
new
RuntimeException
(
"Koodigenerointivirhe"
);
return
eventUser
.
getTokenCode
();
}
return
textcode
;
/**
* Is this a EventUser token code (stored in database).
* @param code
* @return
*/
private
boolean
isEventUserTokenCode
(
String
code
)
{
if
(
code
!=
null
&&
code
.
startsWith
(
EVENTUSER_TOKEN_TEXTCODEPREFIX
))
{
return
true
;
}
else
{
return
false
;
}
}
private
EventUser
getEventUserFromTokenCode
(
String
code
)
{
return
userBean
.
findUserByCodeToken
(
code
);
}
@Override
public
EventUser
getUserFromTextCode
(
String
textcode
)
{
if
(
isEventUserTokenCode
(
textcode
))
{
return
getEventUserFromTokenCode
(
textcode
);
}
return
getUserFromTextCode
(
textcode
,
12
,
5
);
}
...
...
code/moya-beans/ejbModule/fi/codecrew/moya/beans/BootstrapBean.java
View file @
985936b
...
...
@@ -334,6 +334,10 @@ public class BootstrapBean implements BootstrapBeanLocal {
"CREATE INDEX idx_place_slots_products ON place_slots (product_id, place_id)"
,
});
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE event_users ADD tokencode text"
});
}
...
...
code/moya-beans/ejbModule/fi/codecrew/moya/beans/TicketBean.java
View file @
985936b
...
...
@@ -119,16 +119,11 @@ public class TicketBean implements TicketBeanLocal {
}
@Override
public
void
sendTicketEmail
(
EventUser
user
,
String
url
)
{
public
void
sendTicketEmail
(
EventUser
user
,
String
url
)
{
String
token
=
barcodeBean
.
getUserLongTextCode
(
user
);
//String token = barcodeBean.getUserLongTextCode(user);
String
token
=
barcodeBean
.
getUserTextCode
(
user
);
MailMessage
msg
=
new
MailMessage
();
msg
.
setSubject
(
eventbean
.
getPropertyString
(
LanEventPropertyKey
.
ETICKETMAIL_SUBJECT
));
...
...
code/moya-beans/ejbModule/fi/codecrew/moya/beans/UserBean.java
View file @
985936b
...
...
@@ -1138,6 +1138,11 @@ public class UserBean implements UserBeanLocal {
return
userFacade
.
findSuperusers
();
}
@Override
public
EventUser
findUserByCodeToken
(
String
code
)
{
return
eventUserFacade
.
findByTokenCode
(
code
);
}
@PermitAll
public
EventUser
findEventuserByLoginUnsecure
(
String
username
)
{
return
eventUserFacade
.
findByLogin
(
username
);
...
...
code/moya-beans/ejbModule/fi/codecrew/moya/facade/EventUserFacade.java
View file @
985936b
...
...
@@ -199,6 +199,14 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> {
}
public
EventUser
findByTokenCode
(
String
code
)
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
EventUser
>
cq
=
cb
.
createQuery
(
EventUser
.
class
);
Root
<
EventUser
>
root
=
cq
.
from
(
EventUser
.
class
);
cq
.
where
(
cb
.
equal
(
root
.
get
(
EventUser_
.
tokenCode
),
code
));
return
getSingleNullableResult
(
getEm
().
createQuery
(
cq
));
}
// private Predicate addAcPredicate(CriteriaBuilder cb, UserSearchQuery
// query, Root<AccountEvent> root) {
// Expression<BigDecimal> sum =
...
...
code/moya-database/src/main/java/fi/codecrew/moya/model/EventUser.java
View file @
985936b
...
...
@@ -30,19 +30,7 @@ import java.util.Calendar;
import
java.util.Date
;
import
java.util.List
;
import
javax.persistence.CascadeType
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.FetchType
;
import
javax.persistence.JoinColumn
;
import
javax.persistence.ManyToMany
;
import
javax.persistence.ManyToOne
;
import
javax.persistence.OneToMany
;
import
javax.persistence.OrderBy
;
import
javax.persistence.Table
;
import
javax.persistence.Temporal
;
import
javax.persistence.TemporalType
;
import
javax.persistence.UniqueConstraint
;
import
javax.persistence.*
;
import
fi.codecrew.moya.enums.Gender
;
...
...
@@ -121,11 +109,13 @@ public class EventUser extends GenericEntity {
@OneToMany
(
mappedBy
=
"eventUser"
)
private
List
<
GameID
>
gameIDs
;
@ManyToMany
(
mappedBy
=
"participants"
)
private
List
<
Lecture
>
lectures
=
new
ArrayList
<
Lecture
>();
@Column
(
name
=
"tokencode"
)
private
String
tokenCode
;
public
List
<
GameID
>
getGameIDs
()
{
return
gameIDs
;
}
...
...
@@ -531,4 +521,12 @@ public class EventUser extends GenericEntity {
public
void
setLectures
(
List
<
Lecture
>
lectures
)
{
this
.
lectures
=
lectures
;
}
public
String
getTokenCode
()
{
return
tokenCode
;
}
public
void
setTokenCode
(
String
tokenCode
)
{
this
.
tokenCode
=
tokenCode
;
}
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment